TCP是网络中的重点中的重点,网络也叫做IP/TCP协议,因此也能看出TCP的重要性。因此我便想按照三部分来叙述TCP的相关知识。
一、TCP报文格式
TCP协议主要分为两部分
(1)分段头:TCP为了实现端到端可靠传输所加上的控制信息
(2)数据:指由高层即应用层而来的数据。
二、TCP报文格式分析
2.1首部字段
源和目的端口:占16比特。用于多路复用/多路分解来自或送至上层应用的数据,端口用来标识同一台计算机的不同进程。
序列号和确认号:占32比特,这两个字段是TCP可靠传输服务的关键部分,序列号是该报文段首字节的字节流编号(TCP把数据看成是有序的字节流,TCP隐式地对数据流的每个字节进行编号)。这样理解可能更直观,当报文被分解成多个报文段时,序列号就是报文段首字节在整个报文的偏移量。确定号指定下一个期待的字节。TCP是全双工的,假设从主机A接收到主机B的数据,则主机A填充进报文段的确认号是主机A期望从主机B收到的下一个字节序号。还没理清这两者的关系?见深入TCP(3)---三次握手四次挥手:
报头长度(4位):以32位字长为单位。因为选项是不定长的,这就需要标识整个首部字段的长度(单位是32位字),即5+选项个数。4位,单位是32位字,所以首部最长是15*4=60字节,即选项最长是40字节(10个选项)。
保留:占6比特,为将来的应用而保留,目前置为"0"。
编码位(SYN、FIN、ACK、URG、PSH、RST)
<