IP-TCP-UDP报文格式

IP报文格式

IP协议:
基本概念:

主机:配有IP地址,但不进行路由控制的设备
路由器:配有IP地址,又能进行路由控制的设备
节点:主机和路由器的统称
IP协议的功能

寻址和路由(根据对方的IP地址,寻找出最佳的路径传输信息)
传递服务
不可靠 (IP协议只是尽最大努力去交付,可靠由上层TCP协议提供)
无连接 (事先不建立会话)
数据包的分片和重组
IP协议头格式: 

4位版本号:指定IP协议的版本,对于IPV4来讲,就是4
4位首部长度:IP首部长度是多少各32bit,也就是length*4 的字节数,IP头部最大长度是60字节
8位服务类型:
   3位优先权字段(已经弃用)

   4位TOS字段:最小延时,最大吞吐量,最高可靠性,最小成本(这四者冲突,只能选择一个)

   1位保留字段,必须为0

16位总长度:IP数据报整体占多少个字节
16位标识:是一个标识,唯一标识主机发送的报文,如果IP报文在数据链路层被分片了(IP报文长度大于MTU),则每一片里的这个标识(id)都是一样的
3位标志:
   第一位:保留

   第二位:是否允许分片(置0:允许,置1:不允许),如果置1,但是IP报文长度超过MTU则被丢弃

   第三位:结束标志(最后一片置1,表示已经完了,其余的置0)

13位片偏移:分片相对于原始IP报文的偏移(其实就是表示当前分片在原报文中处在哪个位置)
注:发送的报文过大,就需要对其进行分片处理,每一个分片都会包含一个标识(IP地址+标识)到达目的地被重组

8位生存时间(TTL):数据报到达目的地的最大报文跳数,一般是64,每次经过一个路由,TTL-=1;一直减到0,还没到达就丢弃。主要用来防止出现路由循环
8位协议:上层协议类型
16位首部校验和:使用CRC来进行校验,鉴别头部是否损坏
32位源IP地址,32位目的IP地址:表示发送端和接受端
选项:不定长,最多40个字节

TCP报文格式

TCP Header
TCP报文格式

源端口(Source port)目的端口(Destination port)
各16 bits。IP地址标识互联网中的不同终端,端口号标识终端中的不同应用进程,具有本地意义。32位IP + 16位端口号 = 48位插口。 
端口由互联网数字分配机构(Internet Assigned Numbers Authority,IANA)分配,TCP和UDP端口号列表

著名端口号(Well-known)    注册端口号(Registered)    动态端口号(Dynamic)
0~1023    1024~49151    49152~65535
IANA统一分配    向IANA申请注册    本地分配
- 序号(Sequence Number)确认序号(Acknowledgment Number)

各32 bits。TCP连接传输的字节流中的每一个字节都有序号。SN指示本报文段所发送的数据第一个字节的序号。AN指示期望收到对方的下一个报文的第一个字节的序号,所有小于AN的报文都被正确接收。

首部长度(Data offset)
4 bits,以32-bit字为单位。TCP首部长短,也是TCP报文数据部分的偏移量。范围5~15,即20 bytes ~ 60 bytes。options部分最多允许40 bytes。

保留(Resevered)
3 bits,将来使用,目前应设为0。

标志位(Flags)
URG = 1,指示报文中有紧急数据,应尽快传送(相当于高优先级的数据)。 
PSH = 1,接到后尽快交付给接收的应用进程。 
RST = 1,TCP连接中出现严重差错(如主机崩溃),必须释放连接,在重新建立连接。 
FIN = 1,发送端已完成数据传输,请求释放连接。 
SYN = 1,处于TCP连接建立过程。 
ACK = 1,确认序号(AN)有效。

窗口(Window size)
16 bits,接收窗口的大小。接收端希望接收的字节数。

校验和(Checksum)
16 bits,校验报文首部、数据。

紧急指针(Urgent pointer)
16 bits,如果URG = 1,该字段指示紧急数据的大小(相对于SN的偏移),紧急数据在数据部分的最前面。

可选项(Options)
TCP报文的字段实现了TCP的功能,标识进程、对字节流拆分组装、差错控制、流量控制、建立和释放连接等。

UDP报文格式


源端口(Source port)目的端口(Destination port)

报文长度(Length)

16 bits,指示UDP报文(首部和数据)的总长度。最小8 bytes,只有首部,没有数据最大值为65535 bytes。实际上,由于IPv4分组的最大数据长度为(65535 - 20 = 65515) bytes,UDP的报文长度不超过65515 bytes。IPv6允许UDP的长度超过65535,此时length字段设为0

校验和(Checksum)
参考: 
http://www.xuetangx.com/courses/course-v1:UST+UST001+sp/courseware/a4bb2456afc54cdc94defd1ab13b0389/ 
https://en.wikipedia.org/wiki/Transmission_Control_Protocol 
https://en.wikipedia.org/wiki/User_Datagram_Protocol

发布了377 篇原创文章 · 获赞 145 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/Windgs_YF/article/details/104534289
今日推荐