Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
先介绍TCP/IP模型的四个层:(从抽象到物理)依次为:应用层,运输层(TCP/UDP),网络层,网络接口层 流程: 1.应用层向TCP层发送8位字节表示的数据流 2.TCP把数据流分割成适当长度的报文段(实际上的最大长度,又称最大传输段大小,MSS,收到数据链路层的最大传输单元MTU限制,并为了防止数据丢失和保证按序接收,给了每个包一个编号 3.TCP把数据包传给IP层,由它通过网络传送到接收端 4.接收端收到信号后,返回一个ACK(确认),假如在一段时间内(RTT)发送端未收到确认,则任务数据包丢失,启动重新发送流程
在介绍三次握手之前,先介绍下TCP传输的首部:
---Source Port是源端口,16位。 ---Destination Port是目的端口,16位。 ---Sequence Number是发送数据包中的第一个字节的序列号,32位。 ---Acknowledgment Number是确认序列号,32位。 ---Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。[1] ---标志位: 6位,URG表示Urgent Pointer字段有意义: ACK表示Acknowledgment Number字段有意义 PSH表示Push功能,RST表示复位TCP连接 SYN表示SYN报文(在建立TCP连接的时候使用) FIN表示没有数据需要发送了(在关闭TCP连接的时候使用) Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。 ---Checksum是校验和,16位。 ---Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移。三次握手流程如下: 1.客户端发送SYN报文(SEQ=x)给服务器,进入SYN_SEND状态 2.服务器收到SYN报文,回应SYN(SEQ=y)-ACK(ACK=x+1)报文,进入STN_RECV状态 3.客户端收到服务器的SYN报文,回应ACK(ACK=y+1),进入Established状态
1.客户端发送FIN 2.服务器端发送ACK和FIN,客户端进入等待中止 3.客户端发送ACK确认中止,TCP结束
