TCP/IP五层协议栈(3)

1.网络层

1.1.IP协议

在这里插入图片描述

IP协议格式:报头+数据

  1. 4位版本 :IP协议的版本号.当前只有两个取值,4和6(0100 0110).( 这里讨论IPv4 )
  2. 4位首部长度 :IP报头和TCP类似,都是可变的,带有选项.
  3. 8位TOS :只有4位有效,那四位TOS分别表示( 最小延时,最大吞吐量,最高可靠性,最小成本 )(同一时刻只能取一种状态)
    • TOS相当于切换形态.根据TOS,IP协议能够规划出两点之间一条比较合适的路径
  4. 16位总长度 (如果整个IP数据报太长了,IP协议就会把这个大包拆成多个小包,保证每个包都不超过64k).
  5. 16位标识 :被拆成的多个包的16位标识是相同的.
  6. 3位标志 :结束标记:结束标记为0表示还有后续其他包,1表示这是最后一个包.
  7. 13位片偏移 :通过13位片偏移来组织拆分后包的顺序.
  8. 8位生存时间(TTL) :表示一个IP数据报在网络上还能存在多久,这里的单位不是时间,而是 转发次数 .
    • IP数据报被发送的时候,会设置一个初始的TTL(比如常见取值 128/64).
    • IP数据报每次经过一个路由器TTL就会-1.如果TTL减到0了,路由器就会将这个包丢弃.
    • 因为有些包里的IP地址,可能永远到不了,这样的包如果多了,就会无休止且无意义的占用网络资源,所以TTL可以限制这个包无休止的转发.
  9. 8位协议 :用来识别传输使用的是哪种协议.TCP或者是UDP都有不同的取值.
  10. 16位首部校验和 :用来校验数据是否正确
  11. 32位源IP :表示发件人地址(点分十进制表示)
  12. 32目的IP :表示收件人地址
  13. 选项
  14. 数据

1.2.地址管理

IP地址:网络号+主机号

子网掩码: 左侧都为1,右侧都为0.

  • 为1表示这些位网络号
  • 为0表示这些位主机号

特殊IP

  • 如果主机号全为0,该IP就表示网络号(局域网里的一个正常的设备,主机号不能设为0).
  • 如果主机号全为1(255),该IP就表示"广播地址",往这个广播地址上发的消息,整个局域网中都能收到.
  • IP地址是127开头的,该IP都表示"环回IP",表示主机自己(127.0.0.1)
  • IP地址是 10 开头, 192.168 开头, 172.16-172.31 开头,表示该IP地址是一个局域网内部的IP(内网IP).
  • 除此以外剩下的IP称为外网IP.(直接在广域网上使用的IP).
  • 要求外网IP一定是唯一的,每个外网IP都会对应到唯一的一个设备.
  • 内网IP只是在当前局域网中是唯一的,不同的局域网里,可以有相同的内网IP的设备.

1.2.1.IP地址不够用

随着网络发展:让每个设备都有唯一的IP地址已经不现实了.那该怎么办呢.我们来看一些解决方案.

  1. 动态分配IP地址.
    • 让每个设备连上网的时候,才有IP,不联网的时候就没IP.不联网的时候IP就可以被别人使用.
    • 这个方案不能从根本上解决问题(设备没有减少,IP地址也没有增加)治标不治本
  2. NAT机制(当前网络环境).
    • 把网络IP分成内网IP(局域网)和外网IP(广域网).
    • 外网IP表示外网中的唯一的设备.
    • 内网IP表示内网中的唯一的设备.
    • NAT的 动态转换 将内网IP转换成外网IP,从而使内网IP访问可以到外网IP.这样内网中的若干设备就可以共用一个外网IP.
    • 同时同一个内网IP可以在不同的局域网中重复出现.
    • 这样就可以理解为每个外网IP都表示多个设备.这样IP地址的压力就缓解了很多.
  3. IPv6(IPv6和IPv4不兼容)
    • 在报头中使用了一个更长的字段来表示IP地址(16字节,128位)
    • IPv6的表示形式:每个数字都是一个十六进制的数字.每个冒号分割了2个字节.

1.3.路由选择(规划路径)

路由选择就是在两个设备之间,找出一条能够完成传输过程的通道.

  • IP数据报中的目的地址,就表示了这个包要发到哪里去.
  • 如果当前路由器认识这个目的地址就直接告诉你路了.
  • 如果当前路由器不认识就会告诉你一个大概的方向,让你走到下一个路由器的时候再来问问.总有一条路会在询问的过程中离目标越来越近.
  • 这个时候就总会遇到一个认识这个地址的路由器于是就可以具体的转发过去了.
  • 有的时侯不光遇到了一个认识这个地址的路由器,并且他还认识很多条路,就可以选一个更合适的路了.

什么叫路由器"认识"这个IP地址?

  • 在路由器内部维护了一个数据结构,路由表.
  • 路由表里面就记录了一些网段信息(网络号),目的IP就在这些网络号中匹配对应的网络号和对应的网络接口(网络接口就是路由器里面具体的端口)

2.数据链路层

数据链路层的主要协议:以太网

  • 平时插得数据线叫做以太网线.
  • 以太网协议不仅规定了数据链路层的内容,也规定了物理层的内容.

2.1.以太网数据帧

在这里插入图片描述

  • 目的地址(6) :通过6个字节来表示 源地址和目的地址(这个就要比IPv4 更长,长6w多倍)
  • 源地址(6)
    • 这里的地址称为"mac地址".mac地址做到了每个设备都是唯一的(每个网卡都是唯一的).是在网卡出厂的时候就写死了(当然也可以通过配置来更改).
  • 类型 :类型决定数据
    • 0800 表示数据是 完整的IP数据报(46-1500)
      • 以太网帧中的数据长度规定最小46字节, 最大1500字节, ARP数据包的长度不够46字节,要在后面补填充位.
      • 最大值1500称为以太网的最大传输单元(MTU), 不同的网络类型有不同的MTU.
    • 0806 表示数据是 ARP请求/应答(28) + PAD(18)
      • PAD用于填充
    • 0835 表示数据是 RARP请求/应答(28) + PAD(18)
  • CRC校验和(4) :基于CRC算法的校验和.
    • 例: 循环冗余算法

2.1.1.美好的误会

大家可能觉得 mac地址和IP地址,有点重复了.(按理来说一套地址就够了) 那已经有IP地址了为啥还要物理地址?

  • 原因是因为当年网络层协议和数据链路层协议.是各自独立研发出来的.
  • 所以现在的现状就是 mac地址和IP地址 同时使用.表示不同的功能
    • IP用来表示一次传输过程中的起点和终点. (不考虑NAT的情况,一个IP 数据报中的源IP和目的IP是固定的)
    • mac用来表示传输过程中,任意两个相邻节点之间的地址(一个以太网数据帧,在每次转发过程中,源mac和目的mac都会改变)

2.1.2.MTU

  • MTU是一个以太网数据帧能够承载的数据范围.
  • 这个范围取决于硬件设备,以太网是和硬件密切相关的.
  • 不同的硬件设备,对应的数据链路层协议可能不一样,MTU 也可能不相同.

数据链路层考虑的是相邻节点之间的数据传输,考虑这个细节的时候就需要关注到硬件设备的数据搭载量.

  • 不同的交通工具,能够搭载的数据量就不太相同
  • 那如果数据报超过了MTU 咋办?
    • 这就考虑到IP层的分包了.
    • IP层的分包其实不是给IP的报头64k准备的, 更多的是为了适应数据链路层的MTU.
2.1.2.1.MTU对UDP和TCP的影响
  1. MTU对UDP的影响
    • 一旦UDP携带的数据过大, 那么就会在网络层分成多个IP数据报
    • 这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败.
    • 那么这就意味着, 如果 UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了.
  2. MTU对TCP的影响
    • TCP的一个数据报也不能无限大, 还是受制于MTU.
      • TCP的单个数据报的最大消息长度, 称为MSS(Max Segment Size).
    • TCP在建立连接的过程中, 通信双方会进行MSS协商.
    • 最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度 (这个长度仍然是受制于 数据链路层的MTU)
    • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。
    • 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.
    • MSS的值就是在TCP首部的40字节变长选项中 (kind=2)
    • 所以MTU对TCP的影响是比较小的.

2.1.3.ARP协议

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

  • 发送数据时源主机发出ARP请求, 在知道目的IP的情况下,广播形式询问目的IP“硬件地址是多少” (以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播).
  • 目的主机接收到广播的ARP请求, 发现其中的IP地址与本机相符, 则发送一个ARP应答数据包给源主机, 将自己的硬件地址填写在应答包中.
  • 每台主机都维护一个ARP缓存表, 可以用arp -a命令查看. 缓存表中的表项有过期时间 (一般为20分钟), 如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址.

2.1.4.DNS协议

DNS是一个应用层协议.用于域名解析.

域名

因为IP地址不好记.即使写成了点分十进制,仍然对于人类来说不太友好.所以就使用一串英文单词,来表示这个IP地址.这串英文单词,就称为域名.

  • gitee.com就是域名
  • 域名和IP地址之间,是一一对应的关系

DNS 系统最开始的时候,只是一个普通的文件.称为hosts文件.

  • hosts文件的每一行,就描述了IP和域名(140.82.114.3 github.com)之间的关系
  • 后续其他程序(浏览器)中使用这个域名,就会被自动转换成IP地址
  • 现在, hosts文件已经不再使用了
    • 虽然仍然是好使的
    • 但是全世界的域名那么多,总不能天天在这对这个 hosts改来改去.
  • 所以干脆就专门成立一个机构,负责维护这里的域名和IP的应对关系
    • 比如你要申请一个域名,就去这个机构报备即可
  • 这个机构维护一组服务器,把 hosts 文件存到这个服务器里域名解析服务器( 根域名解析服务器 )
  • 想要进行域名解析,就访问一下这个人家的服务器就行了

全世界的设备这么多.每个设备上网,都要去访问这个域名解析服务器的话,域名解析服务器就会压力很大.

  • 为了避免根域名解析服务器压力太大的情况,全世界各个地方的国家,地区,城市,有各自的网络运营商, 这些网络运营商会就近架设域名解析镜像服务器(定期和根域名解析服务器同步即可)
  • 咱们平时上网的时候,一般就是就近访问了咱们的镜像服务器.(可以配置访问镜像服务器)

3. IP数据包分包和组包细节

IP(Internet Protocol)是互联网通信协议的核心, 负责在网络中传输数据. 当需要传输的数据量超过网络链路的 MTU(最大传输单元)时, 就需要将这个较大的 数据包 分割成多个小的 IP 数据包, 称为 IP 数据包的分包; 而在接收方, 需要将多个小的 IP 数据包进行重组, 形成原始的大数据包, 称为 IP 数据包的组包.

3.1. IP 数据包分包细节

  1. 首先, 需要在发送端计算出数据报文的总长度, 并设置标志位和片偏移字段等信息
  2. 再根据链路 MTU 和 IP 报头的长度计算出每个 IP 分片的大小, 并将数据放入分片中
  3. 对于最后一个 IP 分片, 需要设置标志位 MF 为 0, 表示这是最后一个分片
  4. 发送 IP 分片时, 需要按照顺序进行发送, 以免出现接收方无法正确组装的情况

3.2. IP 数据包组包细节

在IP数据包组包过程中,也需要考虑一些细节:

  1. 接收方需要按照分片的顺序逐一接收 IP 分片, 并记录下每个分片的标识符和片偏移
  2. 当接收到一个 IP 分片时, 需要将其缓存下来, 并更新已经接收到的数据长度
  3. 如果接收到的 IP 分片的标志位 MF 为 0, 则表示这是最后一个分片, 可以开始对该 IP 数据包进行重组
  4. 重组时, 需要将多个 IP 分片按照标识符和片偏移从小到大的顺序组装起来, 并根据总长度字段进行完整性检验, 如果数据校验失败, 则需要重传或丢弃该 IP 数据包

3.3. 数据乱序

当接收方接收到乱序数据时, 需要进行数据包重组, 以确保数据的正确性和完整性

  1. 接收方需要先缓存接收到的所有数据包, 同时记录每个数据包的标识符和片偏移
  2. 接收方需要按照标识符从小到大的顺序来组装数据包, 对于同样标识符的数据包, 按照片偏移大小进行排序
  3. 在组装数据包时, 接收方需要检查数据包的校验和是否正确, 如果校验和不正确, 则说明数据包在传输过程中发生了错误, 需要丢弃该数据包并要求重新发送
  4. 如果所有数据包都被正确组装, 接收方就可以将这些数据包进行合并, 并将其作为原始数据进行处理

3.4. IP数据包传输细节图

在这里插入图片描述


IP 数据包分包和组包是为了在互联网传输过程中能够适应不同的网络环境和数据大小, 确保数据的传输顺利进行. 在分包时, 需要设置标志位、片偏移等字段, 并按照顺序进行发送; 在组包时, 需要按照标识符和片偏移从小到大的顺序组装数据, 并进行完整性检验, 以确保数据的正确性和完整性.

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 32
    评论
如何使用本实验手册 本实验手册将CCNA 所要求的重点内容编排为八个实验章节,各章内容结构一致。 每章第一部分是实验所涉及技术的概述,使大家可以较快回忆起理论课上的技术要点, 为实验进行技术上的准备;第二部分是实验内容部分,讲解具体的实验,是各章的中心; 第三部分是本章小结,以列表的方式对本章中所用到的命令进行总结,以便读者查阅。 如下面结构概述所述,各章实验内容都对CCNP 有所涉猎,各位学员倘有疑惑, 可以翻阅相关CCNP 的资料书籍以期达到更加深入的理解。 学习网络技术最好的方法便是亲自动手做实验,希望大家能够在实际环境中完成所 有实验,熟练掌握配置命令;网络上提供了大量的模拟器,希望学员回去之后可以多用 模拟器模拟网络环境,熟悉配置命令。 结构概述 第一和第二个实验是关于无线局域网演示、网线制作和路由器基本使用,为以后的 六个章节的实验打下基础。 实验三、四主要关于路由协议的配置,在路由器上进行静态路由、RIP、IGRP 和 单区域OSPF 的基本配置,此部分知识点在CCNP 课程中发展为第五学期课程――高 级路由技术; 实验五介绍了网络环境中经常用到的一种安全控制技术――IP 访问控制列表,还 涉及到了TCP/IP 协议的相关知识; 实验六、七是关于交换机的基础配置以及VLAN 的配置,本知识点在CCNP 课程 中发展为第七学期――多层交换技术; 实验八介绍了当今流行的两种广域网技术帧中继和NAT 技术,本知识点在CCNP 课程中发展为第六学期――远程接入技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魚小飛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值