TCP和UDP

TCP首部

源端口和目的端口:各占两个字节,加上IP首部的源IP地址和目的IP地址可以唯一确定一个TCP连接。

数据序号:TCP面向字节流传输,表示这个报文段中第一个数据字节序号。4字节

确认序号:仅当ACK标志位为1的时候有效。确认序号代表期望收到的下一个字节的序号。4字节

偏移:头部长度,4位。和IP头部一样,以4字节为单位,最大为60字节。

保留位:6位,必须是0

6个标志位:U(紧急指针有效) A(确认序号有效) P(接收方应尽快将这个报文交给应用层) R(连接重置) S(同步需要用来发起一个链接) F(终止一个连接)

窗口字段:16位,代表的是窗口的字节容量。也就是TCP的标准窗口大小最大为2^16-1=65535字节。

校验和:发送方对于数据内容计算的一个数值,接收方要与发送方数值结果完全一样,从而证明数据有效性。检验和覆盖了整个的TCP报文段;这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。

紧急指针:是一个正偏移量,与序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。

选项与填充(必须为4字节整数倍,不够补0):最常见的可选字段的最长报文大小MSS(Maximum Segment Size),每个连接方通常都在一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。该选项如果不设置,默认为536(20+20+536=576字节的IP数据报)

三次握手四次挥手

2MSL:报文最大生存时间,确保旧的数据不会影响新连接

TCP保活

一种在不影响数据流内容的情况下探测对方的方式。

保活机制的缺点:

  1. 如果出现了短暂的网络错误,保活机制会使一个好的连接断开
  2. 保活机制占用不必要的带宽
  3. 在按流量计费的情况下产生更多的经济开销。

保活机制存在在TCP协议中,默认关闭。TCP连接的任何一端都可以打开这个功能。

保活的过程:如果在一段时间(保活时间)内连接处于非活动状态,开启保活功能的一端向另一端发送保活探测报文,如果没有收到响应报文,那么经过一个已经提前配置好的保活时间间隔后继续发送一个保活探测报文,直到发送探测报文的次数达到保活探测次数,这时对方主机将被确认不可达,连接也将被中断。

TCP保活功能的规则过程中,开启该功能的一端会发现对方处于以下四种状态之一:

  1. 对方主机仍在工作,并且请求可达。请求端将保活计时器重置(重新设定为保活时间值)。如果在计时器超时前有应用程序通过该连接传输数据,那么计时器将再次被设定为保活时间值。
  2. 对方主机已经崩溃,包括已经关闭或者正在重新启动。请求端接收不到响应报文,并在经过保活时间间隔指定的时间后超时。超时前,请求端会持续发送探测报文,一共发送保活探测数指定次数为止,如果请求端没收到任何探测报文响应,那么它将认为对方主机已经关闭,连接也将被断开。
  3. 客户主机奔溃并且已重启。请求端会受到一个对其保活探测报文的响应,但这个响应是一个重置报文段,请求端将会断开连接。
  4. 对方主机仍在工作,但是由于某些原因不能到达请求端。这种情况与状态2相同,因为TCP不能区分状态2和状态4,结果都是没有受到探测报文的响应。

TCP可靠传输

  1. 首部有校验和
  2. 序号和确认机制
  3. 超时重传:如果一个已经发送的报文段在超时时间内没有收到 确认,那么就重传这个报文段。一个报文段从发送再到接收再到确认所经过的时间称为往返 时间 RTT
  4. 连接管理
  5. 流量控制:发送方和接收方各有一个窗口,接收方通过TCP中的窗口字段告诉发送方自己窗口的大小,发送方根据接收方窗口字段的大小设置自己的窗口大小。从而来控制发送速率,使发送方来的及接收。
  6. 拥塞控制:当网络出现拥塞时,分组将会丢失,接收方会重传这个请求。导致网络更加拥塞。从而导致网络更加拥塞。流量控制是为了让接收方来得及接收,而拥塞控制是为了降低整个网络对拥塞程度。

发送方维护拥塞窗口的状态变量

慢开始,拥塞避免。拥塞窗口从1开始每次增加为原来的两倍。当大于门限值之后,进入拥塞避免,每次只增加1。如果出现了超时,让门限值降低为原来的1/2.重新慢开始。

快重传、快恢复:当连续三次接收到同一个确认序号的时候,说明序号的下一个自己数据丢失,重新重传这个字节的数据。然后执行快恢复令门限值变为原来的1/2.拥塞串口等于门限值,这时进入拥塞避免状态。

滑动窗口:

发送方:已发送已确认,已发送未确认,允许发送但未发送,不允许发送。发送方每次将窗口滑动的窗口的左边第一个为已发送并且得到确认的数据。

接收方:已发送确认并交付主机,未按序收到,允许接收,不允许接收。接收方窗口滑动到左边为已接收且已发送确认的数据。

UDP首部

源端口,目的端口,UDP长度,校验和,各占两个字节,总共8字节。 

TCP UDP伪首部

虚拟的数据结构,参与计算校验和

IP首部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值