当前位置: 首页 > article >正文

TCP/IP学习总结

目录

问题一:TCP/IP为什么采用分层的结构

问题二:为什么说传输层提供端到端的服务,网络层是点到点的服务

问题三:怎么确定IP分片中的第一片和分片需要注意的地方

问题四:ARP协议的理解

问题五:路由表中关键的有哪几项

问题六:TCP从哪几个方面来提供可靠性

问题七:TCP连接为什么采用的是三次握手而不是四次,断开连接为什么是四次而不是三次

问题八:TCP断开连接为什么要等待2MLS时间

问题九:重传定时器,坚持定时器,保活定时器的作用


问题一:TCP/IP为什么采用分层的结构

         TCP/IP协议簇在《TCP/IP 详解 卷一:协议》上分为四层,分别为:链路层,网络层,传输层,应用层。经过查找资料,目前共识最多的是五层模型,分别是物理层,数据链路层,网络层,传输层,应用层。从OSI七层模型演变而来,五层模型中应用层囊括了OSI的表示层和会话层。对于初学者很容易想当然的认为应用层是第一层,正确的是第一层是物理层,应用层是第七层。采用分层结构是将复杂的问题分成一个个相对简单的小问题,每层实现相应的功能,模块化的设计在后面的应用中更容易扩展,实现起来也相对容易。

问题二:为什么说传输层提供端到端的服务,网络层是点到点的服务

        传输层上的协议主要有TCP和UDP,拿TCP举例,TCP接受应用层的数据,将数据封装成一个个的TCP报文段,经过三次握手后将数据发送到接收端,TCP协议采用很多机制,比如确认,重传等保障数据能可靠地到达接收端,具体在网络中怎么传输怎么选路传输层不管这些,所以TCP提供的是一个端到端的服务。    网络层的的协议主要是IP协议,主要功能是通过路由选择算法为分组通过通信子网提供适当的路径,实现网络互连。网络中的每一个路由器都不知道完整的路径,IP选路关心的是下一跳的路由选择,将IP数据报送到下一跳的路由中,如此下去,直到到达接收端,所以说网络层提供时点到点的服务。

问题三:怎么确定IP分片中的第一片和分片需要注意的地方

   通过IP首部中的片偏移字段和标志字段中的more fragments(直面翻译是更多片,当有分片发生时,最后一片该为置0,前面的为1)来确定,第一片的片偏移为0,more fragments为1,由此可以唯一确定IP分片中的第一片分组。

   IP的分片每片的标识字段是一样的,到达接收端后通过标识字段和偏移量来进行重组。打个比方,要发送一本书过去,标识字段就好比每页的页码,一页内容分三组发送,每组的标识字段都是一样的。其次任何运输层的首部只出现在第一片的数据中,这个要特别注意。

问题四:ARP协议的理解

        ARP协议是地址解析协议,功能是将IP地址到对应的MAC地址之间提供动态的映射。那什么时候会用到ARP协议呢?在网络层数据封装成IP数据报之后,传输到链路层,链路层将数据封装成帧,在以太网的封装中,要填入接收端的MAC地址,首先会在本机的ARP缓存表中查找有没有IP对应的MAC地址,如果没有找到,这时候主机就会发送ARP请求给以太网上的每个主机。询问的内容是如果谁的IP地址与请求报文中的IP地址对应,那么请告诉我你的MAC地址。

        该部分还有免费ARP和代理ARP。免费ARP有两个作用,一是可以找出IP冲突的问题,二是若主机更换了网卡,对于收到免费ARP请求的主机会将最新的MAC地址更新到缓存表中。对于代理ARP这个也是有前提的,只有在默认路由没有设置和路由器有代理ARP功能的时候,代理ARP才会发生作用。

问题五:路由表中关键的有哪几项

        路由表的表项主要有:目标网络,网络掩码,网关(下一跳),接口,跃点数。IP选路时根据路由表进行选路,确定下一步往哪发。初学者也有一个误区,会认为匹配路由表是从上往下匹配。正确是从最长的网络掩码开始匹配的。先与网络掩码相与,在匹配对应的目标网络。若都没有找到,则会发往默认的路由。

问题六:TCP从哪几个方面来提供可靠性

1,UDP会将应用程序的数据一下子交给网络层,而不管数据有多大,所以UDP很容易导致IP分片。TCP尽量避免分片的发生,应用数据会被分割成TCP认为最合适发送的数据块。

2,TCP采用了对数据进行确认的机制,保证双方都能知道数据发送和接收的情况

3,TCP对首部和数据有一个校验和,这是首部一个强制的校验,而UDP的首部的校验和是可选的。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化,若收到段的检验和有差错,TCP将丢弃这个报文段

 4,对于每个连接TCP管理了四个定时器,分别是重传定时器,坚持定时器,保活定时器,2MLS定时器。每个定时器在特定的场景都会发挥相应的作用,TCP也是通过这四个定时器来处理数据传输过程中的特殊情况。

 5,TCP利用滑动窗口,慢启动,拥塞避免等算法来进行流量的控制。

问题七:TCP连接为什么采用的是三次握手而不是四次,断开连接为什么是四次而不是三次

      首先讲一下四次断开连接,也就是四次挥手,首先主动断开连接的一方发送一个FIN断开请求的报文段,接收方对此有个ACK应答,接收方应用程序关闭触发接收方发送一个FIN的断开请求报文段,然后发送方回复一个ACK,至此正常的断开结束。我们知道TCP是一个全双工的连接,任何一方都可以发数据接收数据,采用四次而不是三次是考虑到半打开的一个情况,假如发送发数据发送完毕后,触发一个FIN的请求,但是此时接收端还有数据未发送完毕,这时候接收端回复ACK后,还是会继续发送完数据,然后才会发送FIN断开的请求。所以必须要有四次挥手。

     经过上面的解释,那么三次握手就容易理解了,之所以存在 3-way hanshake 的说法,是因为 TCP 是双向通讯协议,作为响应一方(Responder) 要想初始化发送通道,必须也进行一轮 SYN + ACK。由于 SYN ACK 在 TCP 分组头部是两个标识位,因此处于优化目的被合并了。所以达到双方都能进行收发的状态只需要 3 个分组。

问题八:TCP断开连接为什么要等待2MLS时间

         MLS是最大报文段生存时间,标准时2分钟,但是在实际中常用是30秒,1分钟或两分钟。为什么是2MLS呢,考虑到一种情况,被动关闭的一方发送了FIN请求后,主动关闭的一方对这个请求发送ACK确认,但是假如这个ACK丢失的话,被动关闭的一方收不到这个ACK,会启动重传FIN,这时候如果主动关闭的一方不处于等待的状态,就会收不到这个重传的报文,TCP连接无法正常断开,所以启用2MLS时间,是让主动关闭的一方有足够的时间来进行对重传的确认。

          再考虑一种情况,假如没有这个等待时间,立马关闭连接,启动同样的TCP连接,网络中有上次存在迟到的报文,会混入到新的连接中,对新连接造成干扰,所以等待2MLS时间,也是等待本次连接的所有报文消亡。

问题九:重传定时器,坚持定时器,保活定时器的作用

   1,重传定时器:TCP当发送一个报文段后会维持一个重传定时器,若在规定的时间内没有收到对该报文段的确认后,则触发对该报文段的重传,重传时间是“指数退避”的

   2,坚持定时器:当接收端的窗口扩大报文段丢失后,发送端无法发送数据,接收端则在等待发送端发送数据,如此形成死锁的情况。坚持定时器就是当收到的窗口为0时,在接下来时间内若没有按时收到窗口扩大报文,则会发送一个探查窗口。

   3,保活定时器:就是探查一下对方是否还活着


http://www.kler.cn/a/15105.html

相关文章:

  • LLM评测指标与评测方法
  • 领海基点的重要性-以黄岩岛(民主礁)的领海及专属经济区时空构建为例
  • [代码随想录Day16打卡] 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树
  • C++AVL平衡树
  • 不完全微分PID控制算法
  • java语言特性(持续更新)
  • Python学习之sh(shell脚本)在Python中的使用
  • 手机短信验证码登录功能的开发实录(机器识别码、短信限流、错误提示、发送验证码倒计时60秒)
  • 你不想成长,生活总会逼着你成长,阿里P8架构师分享十年学习生涯
  • 逻辑回归评分系统(mimic数据集)
  • Java设计模式-工厂模式
  • Vue打包后部署缓存问题处理方式
  • HBase正确使用方法
  • 【Linux从入门到精通】Linux常用基础指令(下)
  • netcore工程在linux下调用linux动态库
  • 借灰姑娘的手,讲述js混淆加密的美丽
  • 嵌入式设备显示屏相关概念汇总
  • 国内直接使用的ChatGTP
  • ThingsBoard教程(三六):规则节点解析 检查关系节点 check relation,实体类型节点 entity type
  • 蒸发器前氟离子超标的解决方法
  • KDJB-802C继电器成组保护校验仪
  • 2023年能源与环境工程国际会议(CFEEE 2023)
  • ES6对String字符串、Array数组、Number数字、Object对象 类型做了哪些升级优化
  • streamx平台部署
  • 1689_MATLAB处理Excel文件提升篇
  • 【ROS】ubuntu18.04安装ROS(ROS1 Melodic)