目录
Socket/TCP
TCP报文格式
TCP是一种协议
报文:报纸文字
TCP报文是发送网络消息需要按照这种报文的格式去包装数据
例如:
TCP规定的数据包格式:
亲爱的[xxx],你好,[XXXXX],保重勿念![xxxx]年[xx]月[xx]日。
那么按照TCP发送一句话:“I Love You”,则这句话必须按照上面的协议类型包装
亲爱的[小明],你好,[I Love You],保重勿念![2020]年[03]月[27]日。
一般需要了解一下几个字段:
-
序号:Seq序号,占32位,用来表示从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标识
-
确认序号:ACK序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ACK=Seq+1
-
标志位共六个:URG、ACK、PSH、RST、SYN、FIN含义:
-
URG:紧急指针
-
ACK:确认序号有效
-
PSH:接收方应该尽快将这个报文交给应用层
-
RST:充值连接
-
SYN:发起一个新连接
-
FIN:释放一个连接
-
-
需要注意的是:
(A)不要将确认序号Ack与标志位中的ACK搞混了。 (B)确认方Ack=发起方Req+1,两端配对
TCP三次握手
所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:
第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server&#x