网络原理-TCP/IP(7)

目录

网络层

路由选择

数据链路层

认识以太网

以太网帧格式

认识MAC地址

对比理解MAC地址和IP地址

认识MTU

ARP协议

ARP协议的作用

ARP协议工作流程

重要应用层协议DNS(Domain Name System)

DNS背景

NAT技术

NAT IP转换过程

NAPT

NAT技术的优缺点


网络层

路由选择

这里就需要解决一个数据包,如何从网络中的一个地址,传输到另一个地址.

路由的过程,就是一跳一跳"问路的过程".(摸着石头过河).

所谓"一跳"就是数据链路层中的一个区间.具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间.

IP数据报传输的过程也和问路一样

数据报中包含目的IP的字段(问路的目标),每个路由器对于网络环境(和它相邻的设备有所了解),此时就根据它的了解,告诉我们下一步应该往哪走.

当IP数据包,到达路由器时,路由器会先查看目的IP;

路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器;

依次反复,一直达到目标IP地址;

那么如何判定当前这个数据包该发送到哪里呢?这就依靠每个结点内部维护一个路由表;

 

路由表可以使用route命令查看

如果目的IP命中了路由表,直接转发即可;

路由表中的最后一行,主要由下一跳地址(通常是上层路由器)和发送接口(从路由器哪个口出)两部分组成,当目的地址与路由表中其他行都不匹配时,就按缺省路由条目规定的接口 发送到下一跳地址.

假设某主机上的网络接口和路由表如下:

这台主机有两个网络接口,一个网络接口连到192.168.10.0/24网络,另一个网络接口连到192.168.56.0/24网络;

路由表的Destination是网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是是发送接口,Flags中U标志标识此条目有效(可以禁用某些条目),G标志标识此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经由路由器转发 

数据链路层

认识以太网

"以太网"不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容.例如:规定网络拓扑结构,访问控制方式,传输速率等;

例如以太网的网线必须使用双绞线;传输速率有10M,100M,1000M等;

以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等; 

以太网帧格式

 如下所示:

源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的;(MAC地址表示的范围比IPv4大很多). 

帧协议类型字段有三种值,分别丢应IP,ARP,RARP;

帧末尾有CRC校验码

认识MAC地址

MAC地址用来识别数据链路层中相连的结点;

一般开发中很少使用MAC地址,而IP地址用的很多;

长度为48位,及6个字节,一般用16进制数字加上冒号或"-"的形式来表示,eg.08-00-27-03-fb-19

在网卡出厂时就确定了,不能修改.mac地址通常是唯一的(虚拟机中mac地址不是真实的mac地址,可能会冲突; 也有些网卡支持用户配置的mac地址).

有些程序使用mac地址作为机器的身份标识,比如外挂.

对比理解MAC地址和IP地址

IP地址描述的是路径总体的起点和终点(终极目标),也就是全局转发(从起点到终点,转发过程:查询路由表,通过IP地址).

MAC地址描述的是路途上每一个区间的起点和终点(阶段目标),也就是局部转发(两个相邻设备转发,一个电脑连接一个路由器->相邻).  经过一次转发,路由器/交换机就会把上述数据包进行分用和重新封装.  帧头存放:源mac,目的mac,每次经过一个路由器/交换机就会发生改变.

认识MTU

MTU相当于发快递时对包裹尺寸的限制.这个限制是不同的数据链路层对应的物理层,所产生的限制.

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;(因为ARP是46字节,而1500字节是硬件限制)

最大值1500称为以太网的最大传输单元(MTU),不同网络类型有不同的MTU;

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片;

不同的数据链路层标准的MTU是不同的;

之前讲到的IP数据包分包问题正是因为数据链路层MTU的限制,而不是因为自身达到了64kb的限制.

ARP协议

ARP和RARP可以认为是两个横跨了网络层和数据链路层的协议.

ARP效果就是能够让路由器/交换机建立一个内部的结构.通过IP地址映射出MAC地址(利用转发表->描述了一个设备和哪些设备之间是连接着的).(常用)

RARP效果是让路由器和交换机也建立一个内部的结构,通过MAC地址映射出IP地址. (不常用)

ARP协议的作用

ARP协议建立了主机IP地址和MAC地址的映射关系.

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;

数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;

因此在通讯前必须获得目的主机的硬件地址.

ARP协议工作流程

重要应用层协议DNS(Domain Name System)

DNS是一整套从域名映射到IP的系统(域名解析系统),(eg.www.google.com这种的就是域名).

DNS背景

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序.但是IP地址不方便记忆.

于是人们发明了一个叫做主机名(域名)的东西,是一个字符串,并且使用hosts文件描述主机名和IP地址的关系.

随着互联网的发展,域名和服务器都越来越多了, 此时要维护hosts文件就非常麻烦了.

就有大佬干脆搭建了一组服务器,来提供域名解析服务(hosts内容放到服务器里了),你某个主机想访问某个域名,就先查询一下域名解析服务器(DNS服务器),查到的结果,就是域名对应的IP,拿着IP进行访问即可.

 DNS是应用层协议

DNS底层使用UDP进行解析

浏览器会缓存DNS结果

NAT技术

之前提到过,IPv4协议中,IP地址数量不充足的问题.

NAT技术是当前解决IP地址不够用的主要手段,也是路由器的一个重要功能;

NAT能够将私有IP对外通信时转为全局IP.也就是一种将私有IP和全局IP相互转化的技术方法;

很多学校,家庭,公司内部采用每个终端设置私有IP,而路由器或有必要的服务器上设置全局IP;

 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的.

NAT IP转换过程

NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;

NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;

 在NAT路由器内部,有一张自动生成的,用于地址转换的表;

当10.0.0.10第一次向163.221.120.9发送数据时就会生成表中的映射关系;

NAPT

那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的,那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?

这时候NAPT来解决这个问题了.使用IP+port来建立这个关联关系

这种关联关系也是由NAT路由器自动维护的.例如在TCP的情况下,建立连接时,就会生成这个表项;在断开连接时,就会删除这个表项;

NAT技术的优缺点

由于NAT依赖这个转换表,所以有诸多限制:

无法从NAT外部向内部服务器建立连接;

转换表的生成和销毁都需要额外开销; 

但是NAT有个最大的优点:不需要更新硬件设备,只更新软件,就可以解决IP地址不够用的问题.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/473366.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习第十六节之创建对象内存分析和小结类与对象

创建对象内存分析 小结类与对象 package oop;//一个项目应该只存在一个main方法 public class Application {public static void main(String[] args) {/*1.类与对象类是一个模版:抽象对象是一个具体的实例2.方法定义,调用!3.对应的引用引用…

036-安全开发-JavaEE应用第三方组件Log4j日志FastJson序列化JNDI注入

036-安全开发-JavaEE应用&第三方组件&Log4j日志&FastJson序列化&JNDI注入 #知识点: 1、JavaEE-组件安全-Log4j 2、JavaEE-组件安全-Fastjson 3、JavaEE-基本了解-JNDI-API 演示案例: ➢Java-三方组件-Log4J&JNDI ➢Java-三方组件-Fa…

各类电纸书使用体验

对移动阅读一直有着强烈的愿望,想要一个易于携带,又能看着比较大气的电子阅读器,这是一个矛盾...所以现在用着海信Hi Reader Pro,还想再寻找一个合适的家用阅读器,对自己用过的阅读器总结一下,给大家做个参…

leetcode刷题(罗马数字转数字)

1.题目描述 2.解题思路 这时候已经给出了字母对应的数字,我们只需要声明一个字典,将罗马数字和数字之间的对应关系声明即可。其中可能涉及到会出现两个连续的罗马字母代表一个数字,这时候我们需要判断遍历的字符和将要遍历的下一个字符是否存…

动态规划--->背包问题理论基础(二维dp)

01背包:n个物品每种都有一个 完全背包:n个物品每种都有相同数量个 多重背包:n个物品每种都有不同数量个 背包暴力解法:每种物品只有两种状态,可以枚举采用回溯算法试一试 题目:三种物品的编号&#xff…

1.逆向基础

文章目录 一、前言二、什么是逆向?三、软件逆向四、逆向分析技术五、文本字符六、Windows系统1.Win API2.WOW643.Windows消息机制4.虚拟内存 一、前言 原文以及后续文章可点击查看:逆向基础 逆向真的是一个很宏大的话题,而且大多数都是相当…

Linux学习——静态库与动态库的打包

目录 ​编辑 一,动静态库介绍 1,动静态库的特点 二,静态库的打包 计算器示例 编译: 1,直接编译 2,打包 三,动态库打包 计算器示例:同上 编译: 1,直…

大模型计算量纲

大模型计算量纲 1. 模型参数量(llama 13B为例) {"architectures": ["LLaMAForCausalLM"],"bos_token_id": 0,"eos_token_id": 1,"hidden_act": "silu","hidden_size": 5120,"intermediate_size&…

图像处理之《生成式隐写研究》论文阅读

这是一篇关于生成式隐写的中文综述文章 一、文章摘要 隐写术通常将秘密信息以不可见的形式隐藏到载体中,从而通过传递含密载体实现隐蔽通信。嵌入式隐写方案通过修改载体将秘密信息嵌入其中,但会不可避免地改变载体的统计特性,因此难以抵抗…

深度学习主流开源框架:Caffe、TensorFlow、Pytorch、Theano、Keras、MXNet、Chainer

2.6 深度学习主流开源框架 表2.1 深度学习主流框架参数对比 框架关键词总结 框架关键词基本数据结构(都是高维数组)Caffe“在工业中应用较为广泛”,“编译安装麻烦一点”BlobTensorFlow“安装简单pip”TensorPytorch“定位:快…

C++之模板类如何继承类实例?(二百五十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

WordPress主题YIA在广告位添加图片广告时下方有空白怎么办?

YIA主题设置中默认有4个广告位,而侧边栏的广告位由站长自行添加。boke112百科在这些广告位添加图片广告后发现图片下方有空白,导致下方的两个角没有变圆角,看起来也有点不好看。具体如下图所示: 其实,这个问题就是典型…