美团提前批面试:为什么TCP三次握手?二次握手行不行?
?客服端要请求服务的链接,首先把SYN报文发给服务端,注意这个报文中生成了一个随机的序列号x,我是否得到回复是根据服务端的确认信号中是否有这个序列号x+1,如果有说明收到了信息;然后服务端给客户端回ACK序列号x+1的时候也会发送一个报文SYN序列号为Y,确认客户端能收到消息,客户端再给服务端回复一个信号内容ACK序列号为Y+1;
所以二次握手的缺陷是,服务端不知道客户端的接收是否正常,所以不行。
计算机用什么来确认收到信号?
答:ACK确认信号;
什么是报文?什么是SYN报文?什么是序列号?报文如何产生以及在哪里存放?序列号如何产生??
报文时一种规定,大家遵守统一种格式就能实现互相通信。SYN报文指的的按照一种格式的用于建立链接的数据包。那么这个SYN报文遵守的规定时什么?遵守的是TCP报文规则。
TCP数据报头部的格式:
源端口? |? 目的端口????????4字节 ------------------------- 顺? ? ? ? ?序? ? ? ? ? ?号? ? ? ? 4字节? -------------------------- 确? ? ? ? ?认? ? ? ? ? ?号? ? ? ? 4字节 ---------------------------- T|保|U|A|P|R|S|F|?窗 C|? ?|R|C|S|S|Y| I |? ? ? ??? ?4字节 P|留|G|K|H|T|N|N| 口 ---------------------------- 校验和? ? |? ? 紧急指针? ? ?4字节 ---------------------------- 可? ? ? ? ? ?选? ? ? ? ? ? 项 ---------------------------- 数? ? ? ? ? ? ? ? ? ? ? ? ? ?据
前20字节为TCP报文的头部,规定了报文是SYN建立链接的报文,还是ACK确认报文,还是FIN结束报文,以及是数据报文等等。
顺序号:是发送端发送的数据报的顺序;前面说到的序列号就是这里
确认号:接收端希望收到的数据报的顺序号;前面说的确认号就是这里
第13-16字节里有标志位,为1表示激活。
|