TCP/IP 之TCP协议(1):概述和报文格式

1、TCP协议(传输控制协议)是端到端的可靠的,面向连接的协议。处理的对象称为TCP报文段(segment),是基于流的协议。

2、不像UDP,TCP留有两个缓存,发送和接收缓存,用来暂存TCP报文段,以便于重传和确认机制使用

3、特点:编号系统,流量控制,拥塞控制,差错控制,计时器(4个)等

4、TCP Segment格式:首部(20B-60B)+ 数据(下面介绍首部的字段)

(1)、源端口地址(2B),目的端口地址(2B):和UDP的意义一样

(2)、序列号(seq)(4B),确认号(4B):下面介绍,确认号仅当ACK标记为1时有效

(3)、首部长度(4bit):为首部的32bit的长度,因此首部长度介于20B-60B之间

(4)、保留(6bit)

(5)、标记(6bit),分别为:URG, ACK, PSH, PST, SYN, FIN

(6)、
窗口大小(2B):以字节为单位。通知对方自己的接收窗口目前的大小。

(7)、
校验和(2B):和UDP校验和的方法一样,不同的是这个功能对TCP来说是必须的

(8)、紧急指针(2B):当URG标记为1时有效,内容见下。

5、编号系统

(1)、序列号:以字节为单位编号,不是以报文段为单位编号。初始编号ISN为随机产生的,以后字节的编号便依次加1。报文段的序列号是这个报文段中第一个字节数据的字节号。

如果报文段不携带用户数据,从逻辑上说不需要序列号(比如仅含有确认的包),但是在一个TCP连接和终止之时,要一个序号,以便让对方进行确认,比如:SYN和FIN的包都需要耗掉1字节的序列号。

(2)、确认号(ACK),这个号要ACK标记设置时才有效。表示接收端期待下一个要收到的字节号码(确认号是累计的,具体说明在重传确认机制中)

6、标记位的含义:

(1)、URG表示紧急指针标记,如果设置了,则下面的URG字段有效,用来做TCP的外带数据(见“外带数据和紧急指针”相关资料)。

(2)、PSH表示这个报不需要等到发送缓冲区满,可以发送;而接收端收到此报后,马上赋予应用进程(大多数TCP实现忽略这个标记的功能了)

(3)、ACK确认标记,表示下面的ACK序列号字段有效,有确认功能(有可能是捎带确认的数据报)

(4)、RST:连接复位,用于终止一条空闲连接和异常终止连接

(5)、SYN在建立连接时用于对序号进行同步

(6)、FIN在结束连接时用于序号的同步

发布了54 篇原创文章 · 获赞 16 · 访问量 34万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章