TCP的一些整理
先说一下七层协议和四层协议

会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
这层协议的代表包括:Telnet、FTP、HTTP、SNMP等。
位码即tcp标志位,有6种标示:
SYN(synchronous建立联机) 当SYN=1,表明这是一个连接请求或连接接受报文。
ACK(acknowledgement 确认) 只有当ACK=1时确认号才有效。
PSH(push传送) 当PSH=1,表明应尽快交付给应用进程。
FIN(finish结束) 当FIN=1,表明此报文字段已经发送完毕,并要求释放连接。
RST(reset重置) 当RST=1,表明连接出现差错,需要释放连接,通知一下对方。
URG(urgent紧急) 当URG=1,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送。
Sequence number(顺序号码)
Acknowledge number(确认号码)
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机。
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
完成三次握手,主机A与主机B开始传送数据。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据.
当目的主机接收到数据包后,将根据报文首部的目的端口号(你看看上面有个图),把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。