- 在处理 telnet 或 rlogin 等交互模式的连接时,该标志总是置位的 。
- 在连接建立时用来同步序号 。当 SYN=1,ACK=0 时表示这是一个连接请求报文段 。若对方同意建立连接,则响应报文中 SYN=1,ACK=1 。
- TCP的紧急方式是发送端向另一端发送紧急数据的一种方式 。
- 只有当 URG 标志置1时紧急指针才有效 。
TCP伪首部包含IP首部一些字段 。其目的是让TCP验证数据是否已经正确到达目的地 。
TCP伪首部只参与校验,不参与实际发送 。
文章插图
12.4.4 TCP选项字段kind(Type)LengthNameReference描述&用途01EOLRFC 793选项列表结束11NOPRFC 793无操作(用于补位填充)24MSSRFC 793最大segment长度33WSOPTRFC 1323窗口扩大系数(Window Scaling Factor)42SACK-PremittedRFC 2018表明支持SACK5可变SACKRFC 2018SACK Block(收到乱序数据)810TSOPTRFC 1323Timestamps1918TCP-MD5RFC 2385MD5认证284UTORFC 5482user Timeout(超过一定闲置时间后拆除连接)29可变TCP-AORFC 5925认证(可选用各种算法)253/254可变ExperimentalRFC 4727保留,用于科研实验12.4.5 选项格式一般Option的格式为TLV结构,如下所示:
Kind / Type(1 Byte)Length(1 Byte)Value
- EOL和NOP Option(Kind 0、Kind 1)只占1 Byte,没有Length和Value字段;
- NOP用于将TCP Header的长度补齐至32bit的倍数(由于Header Length字段以32bit为单位,因此TCP Header的长度一定是32bit的倍数);
- SACK-Premitted Option占2 Byte,没有Value字段;
- 其余Option都以1 Byte的“Kind”开头,指明Option的类型;Length指明Option的总长度(包括Kind和Length)
- 对于收到“不能理解”的Option,TCP会无视掉,并不影响该TCP Segment的其它内容 。
文章插图
12.5 TCP状态变迁图需要熟记TCP的状态变迁图,这有助于源码阅读 。
文章插图
12.6 TCP连接与关闭12.6.1 三次握手TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接,俗称“三次握手” 。
主要分为三个步骤:
- 第一步 :客户端向服务端发送一个 SYN报文段 (只有首部,且SYN被置 1),初始序号(ISN),假设为 A,ACK 置 0 。( 客户端进入SYN_SEND状态 )
- 第二步 :服务器端收到SYN报文段 ,便知道客户端需要请求握手,从 SYN报文段 中提取对应的信息,为该 TCP 连接分配 TCP 缓存和变量,并向该客户 TCP 发送允许连接的报文段(握手应答报文) 。这个报文段只有首部,包含3个重要的信息:( 建立客户端-->服务端的连接 )( 服务器进入SYN_RECV状态 )
经验总结扩展阅读
- 哪个星座是是天蝎座的情劫
- 水表最后一位红色是1吨还是0.1吨
- 龙舌兰酒为什么不能直接喝
- 长虫是什么动物
- 烈火军校董小姐扮演者是谁?
- 牛仔裤38码是多少尺?
- 小丑女的电影是哪一个?
- 唐艺昕演的穿越剧叫什么名字?
- 霉茶叶有什么用途
- bollycon是哪个国家的美瞳品牌?