计算机网络(7) --- UDP协议和TCP协议_哈里沃克的博客-CSDN博客UDP协议和TCP协议https://blog.csdn.net/m0_63488627/article/details/132125374?spm=1001.2014.3001.5501
目录
1.IP与IP协议
IP作用
协议编辑
2.网段划分
DHCP划分
CIDR划分
特殊的IP地址
IP地址的数量限制
3.私有IP地址和公网IP地址
4.路由
5.分片问题
1.分片理论
前提
协议
总结
缺点
2.分片操作
1.IP与IP协议
IP作用
1.网络层的作用就是将消息从A主机发送到B主机
2.IP协议有传输跨主机的能力,但是不是一定能跨主机。需要与传输层进行配合,再确认到路由器传输失败或者传输时间过长需要重新传输,进行策略性调整。
协议
1.4位版本:表示IP协议的种类,有IPv4和IPv6,常见的是IPv4
2.4位首部长度:与tcp协议一致,表示报头的大小
3.8位服务类型:发送的策略
4.16位总长度:表示整个报文的大小
5.8位生存时间:表示报文在路由中的有效时间,避免路由循环导致消息发送不到
6.8位协议:表示上层的报文类型是什么
2.网段划分
IP地址=网络号+主机号
网络号 : 保证相互连接的两个网段具有不同的标识;主机号 : 同一网段内 , 主机之间具有相同的网络号 , 但是必须有不同的主机号;1.在同一内网中,网络号一致,但是主机号不一致
2.在不同的网中,网络号不一致,但主机号可以一致
那么只要网络号和主机号就能表示不同的主机,但是需要分配这样IP地址,因为32位不能分配所有的主机。
DHCP划分
A类 0.0.0.0到127.255.255.255 ;B类 128.0.0.0到191.255.255.255 ;C类 192.0.0.0到223.255.255.255 ;D类 224.0.0.0到239.255.255.255 ;E类 240.0.0.0到247.255.255.255随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就 分配完了, 而A类却浪费了大量地址,因此该策略是不合适的。CIDR划分
1.引入一个额外的子网掩码来区分网络号和主机号;2.子网掩码也是一个32位的正整数. 通常用一串 "0" 来结尾3.将IP地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号;4.网络号和主机号的划分与这个IP地址是A类、B类还是C类无关5. IP 地址与子网掩码做与运算可以得到网络号 , 主机号从全 0 到全 1 就是子网的地址范围特殊的IP地址
1.将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;2.将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数 据包;3.127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1IP地址的数量限制
我们说过:32位不能分配所有的主机,那么需要有策略解决该问题
1.动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到 的IP地址不一定是相同的;2.NAT技术3.IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表 示一个IP地址; 但是目前IPv6还没有普及
3.私有IP地址和公网IP地址
1.路由器是连接两个局域网的设备,所以为了区分则路由器有两个IP地址。
2.局域网的主机有对应的私有IP地址
10.*,前8位是网络号,共16,777,216个地址172.16.到172.31.,前12位是网络号,共1,048,576个地址192.168.*,前16位是网络号,共65,536个地址3.一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP).4.子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT
4.路由
1.数据由一个路由器传向另一个路由器的行为叫“一跳”
2.路由器存在一个路由表,表示在当前子网中,连接路由器的所有主机。并且路由器存在一个默认路由。
3.Linux下通过route指令就可以查看当前的路由表
Destination表示连接路由的子网IP地址
Gate表示下一跳去往的IP
Genmask表示该子网IP的掩码
Flags的UG表示当前的默认路由
Iface表示路由的接口,连接子网
4.发送信息的路径分三种情况:一是在子网内部能找到对应的IP地址;二是子网找不到,需要借助默认路由往公网跳;三是跳往指定的路由向公网传输
5.当一个主机向某个IP地址发送数据的步骤为:1.先遍历路由表,将当前得到的目的IP与表内遍历的掩码进行&运算,随后与Destination比较是否一致,如果网络号系统就是要找的主机;如果不是就需要通过默认路由向公网发送
5.分片问题
1.分片理论
前提
1.一个提前需知道的问题,网络层的数据只是用于IP找主机用的,但是真正在网线上传输的数据其实是下一次的MAC帧。
2.MAC帧的要求就是所有的数据都要小于1500MB,而MAC帧不允许进行分割数据;而TCP也不允许进行分割,因为它是面向字节流的,没有所谓的分割可言。那么自然就需要IP协议进行分割。IP协议有相关的数据进行记录。
协议
1.16位标识:表示分割,如果分割的报文是一样的,那么此刻的分片就是同一个报文分下来的
2.3位标志:第一位保留,无意义;第二位表示“禁止分片”,如果置为1并且超过1500字节,那么IP就会放弃发送该报文了;而第三位表示“更多分片”,如果是最后一片,则置为1,其他都是0
3.13位片偏移:表示当前的数据片是原本报文的哪个偏移
总结
1.区分一个数据片是否被切割过的依据就是看接收到的数据16位标识位是否一致
2.那么当3位标志的“更多分片”为1表示数据还没有接收完,为0表示到结尾了。那么最后的数据片只要看“更多分片”为0即可,而开始数据片“更多分片”为1,并且偏移为0。若想保证数据片没有遗漏,只需要检查数据片的“起始位置+数据片大小”是否等于下一个数据片的偏移量。
3.拆分的工作由网络层的IP协议进行,那么合成也是通过IP协议进行合成。
4.为了保证报文中的数据是否有误,我们需要TCP协议和IP协议的校验和进行校验是否出现问题。
缺点
分数据片的情况是不常见的,因为其操作流程消耗时间。并且拆分出来的数据加大错误的概率。而只要丢失一个数据,tcp需要重新传一整个报文,因为tcp面向字节流,它不在意网络层的数据具体到哪一个点出现错误。
2.分片操作
大致情况如图
网络转发的本质
其实本质就是无数个局域网构建出来的,那么在子网之间转发才能达到主机间通信