三次握手的作用


三次握手的作用:
- 防止因网络阻塞原因,导致服务端无缘无故打开连接。场景1:客户端先发送一个请求连接报文a,但是网络阻塞,所以客户端(没收到回复判断请求报文阻塞了)再发送了一个请求连接报文b。但是呢,服务端先收到请求a,然后(假设是两次握手)服务端就建立连接了!!,它发送了一个回复报文给客户端,但客户端不会再回答(因为假设两次握手)。但三次握手就可以避免这种情况,因为服务端在收到请求时不会建立连接那么快,它会等客户端发送第二个报文给它确认它(服务端)收到的不是历史报文之后,才会建立连接。场景2:客户端滞留的请求报文等到客户端和服务端的交流已经结束之后才到服务端,(如果是两次握手,服务端一收到就打开连接到话)服务端就打开连接浪费资源了。
- 同步初始序列号,syn。如果两次握手,只能让客户端收到服务端的回复报文,只能做到确认客户端的syn报文已被服务端成功接收,做不到让服务端确认自己的报文被客户端正确接收。
- 1月10号更新:之所以需要三次还可以从概念上回答,因为TCP是设计为“全双工通信”即双向通信,当A发送给B syn,B再回复的时候,表示B同意A的连接请求,A可以向B发送东西了,A-》B的连接确立了,但B-》A的连接还没确立,所以,A需要回复B的syn。即B回复A表示B同意A的连接请求,A回复B表示A同意B的连接请求。
这样理解就容易很多了,syn用于同步,seq用于告诉对方我传的字节序列号是什么,对方回复希望收到的下一个是什么。
巨人的肩膀:https://www.youtube.com/watch?v=LyDqA-dAPW4&ab_channel=Cisco

浙公网安备 33010602011771号