TCP协议数据格式
来源:互联网 发布:slam算法工程师招聘 编辑:程序博客网 时间:2024/06/01 10:51
TCP协议间交换的数据单元称为“TCP段”,包括两部分:首部和数据。标准首部长20字节,带有选项的首部会更长。
1. 源端口和目的端口
各占2字节,端口号加上IP地址,共同构成socket。互相通信的进程使用一对socket,包括协议、源IP、源端口、目的IP、目的端口,这五个元素唯一确定一个TCP连接。
2. 序号
占4字节,是TCP段所发送的数据部分第一个字节的序号。在TCP传送的数据流中,每一个字节都有一个序号。建立连接时,发送方将初始序号(Initial Sequence Number, ISN)填写到第一个发送的TCP段序号中。
3. 确认号
占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个TCP段的首部中的序号,等于已经成功收到的TCP段的最后一个字节序号加1。确认号在ACK标志为1时有意义,除了主动发起连接的第一个TCP段不设置ACK标志外,其后发送的TCP段都会设置ACK标志。
4. 数据偏移
占4比特,表示数据开始的地方离TCP段的起始处有多远。实际上就是TCP段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。数据偏移以32位为长度单位,因此TCP首部的最大长度是60(15*4)个字节。
5. 控制位
一共6个,占6比特,设置为1时有效。按顺序依次为:URG、ACK、PSH、RST、SYN、FIN。
URG
紧急位,为1时,首部中的紧急指针有效
ACK
确认位,为1时,首部中的确认号有效
PSH
推位,为1时,要求把数据尽快交给应用程序
RST
复位标志,为1时,复位连接,一般在出错或关闭连接时使用
SYN
同步位,在建立连接时使用,当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,在发回的报文段中使SYN=1和ACK=1
FIN
结束位,为1时,表示发送方完成了数据发送
6. 窗口
占2字节,表示报文段发送方期望接收的字节数,可接收的序号范围是从接收方的确认号开始到确认号加上窗口大小之间的数据。
7. 校验和
校验和包含了伪首部、TCP首部和数据,校验和是TCP强制要求的,由发送方计算,接收方验证。
8. 紧急指针
URG标志为1时,紧急指针有效,表示数据需要优先处理。紧急指针指出在TCP段中的紧急数据的最后一个字节的序号,使接收方可以知道紧急数据共有多长。
9. 选项
最常用的选项是最大段大小(Maximum Segment Size,MSS),向对方通知本机可以接收的最大TCP段长度。MSS选项只在建立连接的请求中发送。
- TCP协议数据格式
- TCP/IP学习笔记二:地址解析协议ARP 数据格式
- TCP/IP协议族的体系结构、数据格式及传输过程
- TCP/IP协议各层数据格式及首部含义
- TCP首部的数据格式
- USB 协议数据格式
- 鼠标 键盘 协议 数据格式
- GPS协议数据格式
- ipv4和tcp报头数据格式
- GPS 数据格式(NMEA-0183协议)
- TCP协议
- tcp协议
- tcp协议
- TCP协议
- TCP协议
- TCP协议
- TCP协议
- TCP协议
- Spring Cloud Config服务端配置细节(二)之加密解密
- 基于git的源代码管理模型——git flow
- MIP 移动网页加速器的认识
- [日推荐]『番茄闹钟』让你专注每个25分钟!
- 11月9日云栖精选夜读:阿里90后工程师,如何用AI程序写出双11打call歌?
- TCP协议数据格式
- 使用DOClever接口管理平台,使用免费开源版本线下(linux(mac))该怎么安装部署?
- 版本控制之道------Git安装和使用
- JavaScript setTimeout 的原理
- cmake指令详解
- 出于好奇,我去暗网里瞧了瞧 —— 你就别去了
- vue-resource jsonp接口传参-json传参
- oracle 12c rac ocr和votedisk管理
- effective C++ 学习 (Customizing new and delete)