TCP建立连接/三次握手:
步骤1 A的TCP向B发出连接请求报文段,其首部中的同步位SYN=1,并选择序号xeq=x,表明传送数据时的第一个数据字节的序号是x号。
步骤2 B的TCP收到连接请求报文段后,如同意,则发回确认。ACK=1,其确认号
ack=x+1。同时B向A发起连接请求,应使SYN=1,自己选择的序号seq=y。
步骤3 A收到此报文段后向B给出确认,其ACK=1,确认号ack=y+1。
A的TCP通知上层应用进程,连接已经建立。
TCP报文格式:
源端口和目的端口字段----------------各占2字节。端口是传输层玉应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。
序号字段----------------------------占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认好字段--------------------------占4字节,是期望收到对方的下一个报文段的数据的第一个自己的序号。
首部长度----------------------------占4位,指出TCP首部共有多少个4字节,首部长度在20-60字节之间,所以,该字段值在5-15之间。
保留字段----------------------------占6位,保留为今后使用,但目前位置为0.
紧急URG-----------------------------当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送。
确认ACK-----------------------------只有当ACK=1是确认号字段才有效。
推送PSH(PuSH)---------------------接收TCP收到PSH=的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
复位RST(ReSeT)--------------------当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输连接。
同步SYN-----------------------------同步SYN=1表示这是一个连接请求或连接接受报文。
终止FIN(FINis)--------------------用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。
窗口字段----------------------------占2字节,用来让对方设置发送窗口的依据,单位为字节。