首先粗略了解一下TCP数据段的格式
其中URG、ACK、PSH、RST、SYN、FIN是六个控制位
建立连接的过程:三次握手
1.客户端发出段1,SYN位表示连接请求。序号是1000,这个序号在网络通讯中用作临时
的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正
确顺序,也可以发现丢包的情况,另外,规定SYN位和FIN位也要占一个序号,这次虽然没发数据,但是由于发了SYN位,因此下次再发送应该用序号1001。mss表示最大段尺寸,如果一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。
2.服务器发出段2,也带有SYN位,同时置ACK位表示确认,确认序号是1001,表示“我
接收到序号1000及其以前所有的段,请你下次发送序号为1001的段”,也就是应答了客户端
的连接请求,同时也给客户端发出一个连接请求,同时声明最大尺寸为1024。
3.客户端发出段3,对服务器的连接请求进行应答,确认序号是8001。
在这个过程中,客户端和服务器分别给对方发了连接请求,也应答了对方的连接请求,
其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为’‘’三
方握手(three-way-handshake)”’。在建立连接的同时,双方协商了一些信息,例如双
方发送序号的初始值、最大段尺寸等。
数据传输的过程:
1.客户端发出段4,包含从序号1001开始的20个字节数据。
2.服务器发出段5,确认序号为1021,对序号为1001-1020的数据表示确认收到,同时请
求发送序号1021开始的数据,服务器在应答的同时也向客户端发送从序号8001开始的10个字
节数据,这称为piggyback。
3.客户端发出段6,对服务器发来的序号为8001-8010的数据表示确认收到,请求发送序
号8011开始的数据。
关闭连接的过程:四次握手
1.客户端发出段7,FIN位表示关闭连接的请求。
2.服务器发出段8,应答客户端的关闭连接请求。
3.服务器发出段9,其中也包含FIN位,向客户端发送关闭连接请求。
4.客户端发出段10,应答服务器的关闭连接请求。