网络层&数据链路层
网络层
-
IP协议
4位版本号:ipV4还是ipV6。
4位首部长度:首部里面有多少个32位bit(4个字节),15*4。
8位服务类型:3位优先权字段(已弃用),4位TOS字段,1位保留字段(必须置0)
4位TOS字段:最小延迟,最大吞吐量,最高可靠性,最低成本。
16位总长度:数据首部+数据。
16位标识:用来唯一标识主机发送的报文。如果报文在数据链路层被分片了,那每一个被分片的报文的这个id都是一样的。
3位标志:第一个保留,没说以后不用;第二位为1表示禁止分片,如果分片了就置为0;第三位是一个结束的标志,也就是说如果被分片了,在分片的包中是最后一个则为1,其余为0。
13位片位移:分片相对于原始报文中的偏移量。
8位生存时间(TTL):报文到达目的地最大的报文跳数。一般为64,每经过一个路由器,就会减1,如果减为0还没有到达目的地,就丢弃,防止出现路由循环。
8位协议号:上层协议是什么。
16位首部校验和:校验首部是否损坏。 -
网段划分
-
网络号:保证相互连接的两个网段具有不同的标识
-
主机号:同一网段内,主机具有相同网络号,但必须要有不同的主机号
-
CIDR:引入一个子网掩码来区分网络号和主机号,子网掩码也是一个32位整数,以一串‘0’结束,将ip跟子网掩码‘&’,可以得到网络号,CIDR提高了ip号的利用率,减少了浪费,减缓了ip不够用,但并没有从根本上解决ip不够用的问题。
-
特殊的主机号:主机号全为0:子网掩码
主机号全为1:广播地址
127.*:用于本机环回测试 -
真正能解决ip不够用的问题的方案:
动态分配ip地址,只给连入网络的设备分配ip地址;
NAT技术;
ipV6,ipV6不是简单的ipV4的升级版本,ipV6是16位字节128位 -
私网IP和公网IP
路由器有两个端口,一个LAN端口,一个WAN端口,LAN口连接的主机都是从属于这个路由器的子网中,WAN连接的公网IP,不同的路由器的子网ip其实都是一样的,一个子网内的主机号不能相同,但是不同的子网之间则可以 -
NAT和NAPT
NAT将局域网IP映射为公网IP,内部有一张转换表记录局域网ip跟公网ip之间的映射;如果局域网内多台主机都需要访问外网,那就需要NAPT,NAPT将局域网IP+PORT映射为公网IP+PORT
缺陷:
无法从NAT外部向内部服务器建立连接;
NAT转换表的生成和销毁都需要一定的开销;
如果NAT设备发生故障,就会断开连接。 -
路由
当IP数据报到达路由器时,路由器查看自己的路由表是否能直接送到目的主机,如果能就直接发送过去,如果不能就发给下一个路由器,依次反复,直到目的主机。
数据链路层
-
以太网
-
以太网是应用最广泛的局域网技术,与之并列的还有令牌环网,无线LAN等。
-
MAC地址和IP地址
MAC地址:传输路途上每一个区间的起点和终点。MAC地址在网卡出厂的时候就已经确定了,是物理地址。
IP地址:传输路途上总体的起点和终点 -
MTU(最大传输单元)
以太网中规定数据的最小长度为46字节,最大为1500字节,这个1500字节就是MTU,不同的网络有不同的规定。MTU相当于对包裹的一个限制,如果不足46,则在后面填充补位,如果超过1500,则需要进行分片。 -
对IP协议的影响
IP的数据报如果太大,就需要分片,分片的包中每一个的16位标识都是一样的,3位标志中的第二位置为0,如果是最后一个分片的,则第三位为1.到达接收端后,再 根据13位片位移来进行拼装。一旦有一个小包丢失拼装就会失败。 -
对UDP协议的影响
如果UDP数据太大,就会在网络层被分片为多个IP数据报,只要有一个小包丢失,那就会重组失败,整个数据丢失的概率大大增加。 -
对TCP协议的影响
在建立连接的时候就已经知道了双方的MSS,双方会选择较小的MSS作为最终的MSS,但仍然受制于MTU。 -
ARP
是介于数据链路层和网络层之间的协议,建立IP地址跟MAC地址之间的映射,根据IP来查找MAC地址,RARP是根据MAC地址来查找IP地址。
发送数据的时候已经知道了目的ip,然后根据目的ip在本地ARP缓存表中查找目的MAC,如果找到了就直接发送,如果没找到,就以广播的形式发送一个ARP请求数据包到局域网中,里面有源MAC,目的IP,目的MAC(FF:FF:FF····以广播的形式),局域网中的主机收到广播后查看,如果不是自己的ip就直接丢弃,如果是自己的ip就将自己的MAC地址返回,然后源主机刷新本地ARP缓存表。