TCP/UDP协议首部格式

1. UDP协议首部格式

TCP/UDP协议首部格式

UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,
1.源端口号: 可有可无,需要对方回信时选用,不需要时全部置0。
2.目的端口号:必须有,在终点交付报文的时候需要用到。
3.长度:UDP的数据报的长度(包括首部和数据)其最小值为8字节(只有首部)。
4.校验和:检测UDP数据报在传输中是否有错,有错则丢弃。
该字段是可选的,当源主机不想计算校验和,则直接令该字段全为0。
当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给应用进程。
如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0,),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方。

2. TCP协议首部格式

TCP/UDP协议首部格式

  • 序号seq:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段发送数据的第一个字节的序号

  • 确认号ack:(接收方)期望收到发送方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的数据已收到。

  • 数据偏移(首部长度):TCP报文段起始点到数据部分起始处的距离,以4B为单位,若数据偏移为6,代表24字节。(因为存在长度可变的选项和填充部分,有了数据偏移就能知道数据部分从何处开始)
    TCP/UDP协议首部格式

  • 6个控制位a.紧急位URG:URG=1时,代表紧急数据,有高优先级,不需要在发送缓存队列里面排队,配合紧急指针字段使用。b.确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。c.推送位PSH:PSH=1时,接收方尽快交付接受应用进程,不再等到接受缓存填满再向应用层交付。d.复位RST:RST=1时,表示TCP连接中出现严重差错,必须释放连接,然后再重新建立连接。e.同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。f.终止位FIN:FIN=1时,表示此报文段发送方数据已发完,要求释放连接。

  • 窗口:指的是发送本报文段的一方现在允许对方发送的数据量大小,例如文件接收方发送一条报文(确认号为101,窗口为2000)给文件发送方,发送方最多可以发送序号为101~2100的数据。

  • 紧急指针:URG=1时才有意义,指出本报文段中紧急数据的字节数,若紧急指针为50,则代表从数据部分起始处往后50个字节的数据为紧急数据。