今日谈:数据报能否直接交给IP层而不经过UDP、TCP与UDP的首部格式
一、数据报能否直接交给IP层而不经过UDP?有哪些东西是UDP能够提供而IP不能够提供的?
不能够直接将数据报交给IP层,因为UDP层把应用层传来的数据(比如源端口、目的端口这些信息)进行了封装才给IP层的,而IP层是没有源端口、目的端口这些信息的。如果直接给IP层,就会导致数据包无法交给指定的进程。
二、TCP与UDP的首部格式
我们需要重点关注其有哪些字段及其长度。
UDP
UDP报文的首部字段非常简单,它由四个字段构成,每个字段占2个字节。
分别是源端口、目的端口、长度、检验和。
其中,源端口是源端口号、目的端口是目的端口号,长度就是UDP用户数据报的长度了咯,检验码放置的是差错检验码。
这里注意在计算检验和的时候,UDP与IP计算差错检验和有些不同,UDP是把首部和数据部分放在一起计算检验和,并且计算检验和时还需要加上12个字节的伪首部。
伪首部由第一个字段源IP地址、第二个字段目的IP地址、第五个字段UDP用户数据报的长度,第三个字段是全0,第四个字段是协议字段的值17.
TCP
TCP的字段就比较多了,而且其长度是不固定的,不过其最小长度是20字节。
其固定字段有:源端口、目的端口、序号、确认号、数据偏移、保留、紧急URG、确认ACK、推送PSH、复位RST、同步SYN、终止FIN、窗口、检验和、紧急指针和选项、填充。
下面介绍几个比较重要的字段。
源端口和目的端口分别占2个字节。
序号占4个字节,确认号占4个字节。
数据偏移:占4位,它其实就是首部的长度。其单位是4字节,因为其最大可是15,所以TCP首部的最大长度是60字节。
保留:占6位。
接下来是6个标志位,都占1位:
紧急URG:置1用于告诉接收方此报文段有紧急数据。与后面的紧急指针配合使用。紧急指针占2个字节,用于告诉本报文段的紧急数据有多少字节。
确认ACK:为1时确认号才有效。为0则无效。
推送PSH:此字段置1时,可以将数据马上发送出去,不需要积累。
复位RST:此位置1时,表明TCP连接出现严重差错,需要重新建立连接。
同步SYN:
SYN=1,ACK=0表明这是请求连接报文。
SYN=1,ACK=1表明这是对方同意建立连接的连接接受报文。
终止FIN:此位置1,表示数据发送完毕,释放连接。
窗口:占两字节。窗口字段反应了接收方的接收缓存空间大小。
检验和:占2字节。和UDP一样,把首部和数据部分放在一起计算检验和,并且计算检验和时还需要加上12个字节的伪首部。伪首部由第一个字段源IP地址、第二个字段目的IP地址、第五个字段TCP用户数据报的长度,第三个字段是全0,第四个字段是6.
选项:长度可变。其最大报文段长度MSS的长度为数据字段的长度。
- 点赞
- 收藏
- 关注作者
评论(0)