运输层-UDP/TCP协议

一.UDP 

  • 源端口:发送方应用层进程得端口号
  • 目的端口:接受方应用层进程得端口号
  • 长度:UDP用户数据报的长度,最小值是8(仅首部)
  • 校验和:检测UDP用户数据报在传输过程中是否有错,有错就丢弃。

UDP一定是偶数个字节,不足可以补0。

二.TCP

  • 源端口:发送端的端口号
  • 目的端口:接收端的端口号
  • 序列号:本报文段的数据的第一个字节的序号【接收端有序接收可能被分片的报文】
  • 确认序号:期望收到对方下一个报文段的第一个字节的序号
  • 首部长度(数据偏移):TCP报文段的数据起始处距离TCP报文段的起始处有多远,即首部长度。单位:32位(4个字节)
  • 保留:占6位,保留为今后使用,目前应置为0.
  • 紧急URG: 此位置1,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传递。【类似于消防车/救护车之类的
  • 确认ACK: 仅当ACK=1时,确认号字段才有效,TCP规定,在建立连接后所有传达的报文段都必须把 ACK置1.
  • 推送PSH: 当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就收到对方的响应,在这种情况下,TCP就可以使用推送(push)操作,这时,发送方TCP把PSH置1, 并立即创建一个报文段发送出去,接收方收到PSH=1的报文段,就尽快的(即:“推送向前”)交付给接收应用进程,而不在等到整个缓存都满了在交付上去【其实不会慢了才交付,一般TCP都是接收报文达到一定的数据就交付上去了】。
  • 复位RST: 用于复位相应的TCP连接。
  • 同步SYN: 仅在三次握手建立TCP连接时有效。 当SYN=1而ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则应在相应的报文段中使用SYN=1和ACK=1.因此,SYN置1就表示这是一个连接请求或连接接收报文。
  • 终止FIN: 用来释放一个连接,当FIN = 1时,表明此报文段的发送方的数据已经发送完毕,并要求释放运输连接。
  • 窗口:指的是发送本报文段的一方的接收窗口。【流量控制,发送数据 < min(拥塞窗口, 接收窗口)
  • 校验和:校验和字段校验的范围包括首部和数据两部分,在计算检验和时需要加上12字节的伪头部【伪头部作用:确认本报文段是不是发送给本机的,参考:https://baike.baidu.com/item/%E4%BC%AA%E9%A6%96%E9%83%A8?fr=aladdin】。
  • 紧急指针:仅在URG = 1时有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通的数据),即指出了紧急数据的末尾在报文段中的位置,注意:即使窗口为0时也可以发送紧急数据。
  • 选项:长度可变,最长可达40个字节,当没有使用选项时,TCP首部长度是20个字节。

猜你喜欢

转载自blog.csdn.net/qq_44065088/article/details/109235582