IP通信基础第三周
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终止连接/四次握手:
步骤1现在A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主
动关闭TCP连接。A把连接释放报文段首部的FN=1,其序号seq=u,等待B的确认
步骤2 B发出确认,确认号ACK=1,ack=u+1,而这个报文段自己的序号seq=v。TCP
服务器进程通知高层应用进程。从A到B这个方向的连接就释放了,TCP连接处于半关闭状态。B若发送数据,A仍要接收。
步骤3若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接。
FN=1,seq=w,ACK=1,ack=u+1,A收到连接释放报文段后,必须发出确认。步骤4在确认报文段中ACK=1,确认号ack=w+1,自己的序号seq=u+1。
TCP报文格式:
- 字节号:TCP把连接中发送的所有数据字节都编上号,产生一个随机数作为第一个字节的编号
- 序号字段:4字节,序号字段的值则指本段文段所发送的数据的第一个字节的序号,即表示报文段携带的第一个字节数据的编号
- 确认号字段:4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号,即把正确收到的最后一个字节的编号+1
- 首部长度:4字节,指出TCP首部共有多少个4字节,首部长度在20-60字节之间,该字段值在5-15之间
- 紧急URG:当URG=1时,表明紧急指针字段有效,告诉系统此报文段中有紧急文段,应尽快传送(相当于高优先级的数据)
- 确认ACK:只有当ACK=1时确认号字段才有效,当ACK=0时,确认号无效
- 推送PSH(push):接收TCP收到PSH=1的报文段,就尽快的交付接收应用进程,而不再等到整个缓存就填满后再向上交付
- 复位RST(reset):当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,再重新建立传输连接
- 同步SYN:SYN=1表示这是一个连接请求或连接接受报文
- 终止FIN(finis):用来释放一个连接,FIN=1表明此报文段的发送端的数据已发送完毕,并要求释放传输连接,序号字段有效
- 窗口字段:发送端窗口是由接收端决定的,用来告知发送端接受端的缓存大小
- 校验和:检测受到损伤的报文段,检验和字段检验的范围包括首部和数据两部分,要在报文段的前面加上12字节的伪首部
浙公网安备 33010602011771号