面试官:为什么TCP三次握手?二次握手行不行?

美团提前批面试:为什么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表示激活。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值