网络层&数据链路层

网络层

  • 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缓存表。