广州liunx培训
达内广州云计算中心

18087159764

热门课程

关于TCP/UDP报文格式

  • 时间:2016-09-27
  • 发布:广州linux培训
  • 来源:达内新闻

关于TCP/UDP报文格式

TCP 协议为终端设备提供了面向连接的、可靠的网络服务;UDP 协议为终端设备提供了无连接的、不可靠的数据报服务。从TCP 协议为了保证数据传输的可靠性,相对于UDP 报文,TCP 报文头部有更多的字段选项。

首先让我们来看一下 TCP 的报文头部主要字段:

1.源端口号(source port)和目的端口号(destination port):用于标识和区分源端设备和目的端设备的应用进程。

在TCP/IP 协议栈中,源端口号和目的端口号分别与源IP 地址和目的IP 地址组成套接字(socket),唯一的确定一条TCP 连接。

2.序列号(Sequence number):用来标识TCP 源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一个数据字节。

如果将字节流看作在两个应用程序间的单向流动,则TCP 用序列号对每个字节进行计数。序列号是一个32bits 的数。

3.确认序号(Acknowledgement umber,32bits):既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望接收到的下一个序号。

因此,确认序号应该是上次已成功收到的数据字节序列号加1。

4.窗口大小(windows size):TCP 的流量控制由连接的每一端通过声明的窗口大小来提供。

窗口大小用数据包来表示,例如Windows size=3, 表示一次可以发送三个数据包。窗口大小起始于确认字段指明的值,是一个16bits 字段。窗口大小可以调节。

5.校验和(checksum):用于校验TCP 报头部分和数据部分的正确性。

6.可选字段:最常见的可选字段是 MSS(Maximum Segment Size,最大报文大小)。

MSS指明本端所能够接收的最大长度的报文段。当一个TCP 连接建立时,连接的双方都要通告各自的MSS 协商可以传输的最大报文长度。我们常见的MSS有1024(以太网可达1460 字节)字节。

相对于 TCP 报文,UDP 报文只有少量的字段:源端口号、目的端口号、长度、校验和等,各个字段功能和TCP 报文相应字段一样。

UDP 报文没有可靠性保证和顺序保证字段,流量控制字段等,可靠性较差。当然,使用传输层UDP 服务的应用程序也有优势。正因为UDP 协议较少的控制选项,在数据传输过程中,延迟较小,数据传输效率较高,适合于对可靠性要求并不高的应用程序,或者可以保障可靠性的应用程序像DNS、 TFTP、SNMP 等;UDP 协议也可以用于传输链路可靠的网络。

TCP使用三次握手( three-way handshake )协议来建立连接。三次握手协议可以完成两个重要功能:它确保连接双方做好传输准备,并使双方统一了初始顺序号。

这三次握手为:

1.请求端(通常称为客户)发送一个 SYN 报文段( SYN 为 1 )指明客户打算连接的服务器的端口,以及初始顺序号( ISN )。

2.服务器发回包含服务器的初始顺序号的 SYN 报文段( SYN 为 1 )作为应答。同时,将确认号设置为客户的 ISN 加 1 以对客户的 SYN 报文段进行确认( ACK 也为 1 )。

3.客户必须将确认号设置为服务器的 ISN 加 1 以对服务器的 SYN 报文段进行确认( ACK 为 1 ),该报文通知目的主机双方已完成连接建立。

上一篇:详解:Listen函数
下一篇:关于TCP连接的建立和关闭
选择城市和中心
贵州省

广西省

海南省