1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 网络编程基础之计算机网络IP TCP UDP 协议结构介绍

网络编程基础之计算机网络IP TCP UDP 协议结构介绍

时间:2018-08-17 02:47:17

相关推荐

网络编程基础之计算机网络IP TCP UDP 协议结构介绍

IP协议是运行在OSI七层模型中网络层的协议,主要结构如下图

Version(版本):占4bit,标识IP 封包的版本,目前使用的是 IPv4;

报文长度(Header Length):占4bit,描述IP包头的长度,单位为字节(bytes);

服务类型(Type of Service):占8bit,前3个bit定义包的优先级,后5个bit分别表示为D 时延、 T 吞吐量、 R 可靠性、 M 传输成本和0 保留位;

IP包总长(Total Length):占16bit,以字节为单位计算的IP包的长度 (包括头部和数据),IP包最大长度65535字节;

标识符(Identifier):占16bit,该字段和Flags和Fragment Offset字段联合使用,对较大的上层数据包进行分段(fragment)操作;

标记(Flags):占3bit,第1位不使用。第2位是DF(Don‘t Fragment)位,1表明不能对数据包分段,0表示可分段。第3位是MF(More Fragments)位,1表明后面还有分段,0表示该数据包为最后1个分段数据包;

片偏移(Fragment Offset):占13bit,表示该IP包在该组分片包中位置;

生存时间(TTL):占8bit,数据包每经过1个路由器会将IP包的TTL值减少1;

协议(Protocol):占8bit,标识了上层所使用的协议。和端口号类似,IP协议用协议号区分上层协议。TCP协议的协议号为6,UDP协议的协议号为17。

报头校验和(Head checksum):计算IP头部的校验和,检查报文头部的完整性;

源IP地址和目的IP地址:标识数据包的源端设备和目的端设备;

可选项(Options):这是一个可变长的字段;

填充(Padding):因为IP包头长度(Header Length)部分的单位为32bit,所以IP包头的长度必须为32bit的整数倍。因此,在可选项后面,IP协议会填充若干个0,以达到32bit的整数倍 。

Tcp 和UDP协议运行在OSI模型汇总的传输层,主要用来建立网络连接传输用户数据等它们的结构如下图:

其中,UDP报文比较简单,不做介绍,图中完全可以看出来。

UDP报文与TCP报文的格式有所不同,TCP明显比UDP长度更长,因此也相应有更多功能,比如可靠性等。

TCP报文格式如下:

Sequence Number:即发送序号。发送主机端会在TCP报文封装时,确定一个初始号码,后续报文序号会依次的递增,接收端可以根据此序号来检测报文是否接收完整。

Acknowledgement Number :即回应序号。接收端接收到TCP报文,通过检验确认之后会根据发送序号产生一个回应序号,发送端根据此序号确定报文被成功接收到。

源端口号(Source port)和目的端口号(Destination port):用于标识和区分源端设备和目的端设备的应用进程。

Data Offset :报头固定长度。如果options没设定的话,其长度是20byte。

Reserved :这是保留区间暂时还没被使用。

Contral Flag:包括六个标记位。URG为1,表示紧急报文;ACK为1,表示需要回应的报文;PSH为1,此报文所携带的数据会直接上传给上层应用程序而无需经过TCP处理;RST为1,要求重传;SYN为1,表示要求双方进行同步沟通;FIN为1,表示传送结束。

窗口大小:称为“滑动视窗(Sliding Window)”。当TCP连接建立起来后,两端都会将窗口大小设定为初始值,然后发送端就会按初始值大小(比如3)向对端发3个TCP报文,然后窗口会往后移动3个报文位,填补发送报文出去之后的空缺。如果接收端能一次处理接收下来的这3个报文的话,就会告诉发送端其窗口值为3,但如果接收端只能处理2个报文,就会告诉发送端其窗口值为2。这时,发送端需要调整其窗口大小为2,视窗则只会往后移动2个报文位,下一次只发送2个TCP报文。

Chechsum :当发送报文时,发送端会对报文进行计算得出一个检验值并和报文一起发送,接收端收到报文后,会再对报文进行计算,如果得出的值和检验值不一致,则会要求对方重发该个报文。

Urgent Pointer :如果URG被设定为1,这里就会指示出紧急报文所在位置,不过这种情形非常少见。

Option :这个选项比较少用。当需要使用同步动作的程序(如Telnet)要处理好终端的交互模式就会使用到option来指定报文的大小,因为telnet使用的报文很少但又需要即时回应。 Option的长度为0,或32bit的整倍数,如果不足则填充到满。

码字不易,多多关照

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。