Tcp协议客户端与服务端--三次握手

前言:

  我们经常浏览网页,网络聊天等,都是通过tcp协议以及udp协议进行传输的,Tcp和udp协议都工作在

传输层,都是在程序之间进行数据的传输,tcp以及udp协议都是以二进制数进行传输

那么tcp以及udp协议具体他们之间有什么区别呢?

  答:一个基于链接,一个基于非链接

  例子:如果将人与人之间的通信比喻成进程与进程之间的通信

  a.非链接可以比喻成写信:

  1.对方是否能收到信息

  2.内容是否完整

  3.如果有两封信他是否按照先后顺序进行接受

 

  b.基于链接可以比喻成打电话:

        那么打电话则不同这一系列的操作,电话接通,相互通话结束挂断等操作流程,都可以得到对方的确认。

 

 

  总结:那么打电话是基于链接的那么就是TCP协议,写信就是基于非链接的也就是Udp协议

                  

多测师教育培训之什么是三次握手?:

  答:三次握手是建立通讯链接的过程。

  1.发送端(客户端)向接受段发送一个数据包给接受端(服务器)询问我是否可以与你建立链接,这个数据包我们称为Syn包,syn包里会生成序列号

  2.如果服务端同意链接那么就会进行回复客户端,发送的数据包SYN加上一包ack+1包

  注意:Ack包(ack包有自己的固定格式,长度大小,由接受方发送给请求放 表示发送的syn确认信息无误,1表示数据确认有效)

  3.客户端收到了服务端的确认信息(syn+ack)包之后,然后向服务端发送ack包,建立链接成功

 

  总结:那么这个交互的过程分为三次,发送了3包数据包,所以我们称为3次握手

 

 

 

为什么是3次握手而不是两次握手呢?

  答:是为了防止已失效的报文信息突然又传到服务端引起错误

 

假如采用两次握手建立链接:

       客户端向服务端发送一包请求数据包(syn包),如果因为一些未知原因(网络等等)导致没有到达服务器,在传输的过程中在某个节点产生了滞留。

为了建立链接那么客户端会再次发送一个请求(syn包)给服务端,这次的包正常送达,服务端回复syn+ack包建立链接,那么阻塞的第一个数据包突然恢复,第一包syn又送达到服务器,那么这个时候服务端会误认为客户端又发起了一个新的请求,那么这个时候服务端就会认为是两个链接状态,客户端端会认为是一个链接就会导致两个端状态不一致

 

  总结,所以就会采用三次握手进行确认,就是为了解决网络信道不稳定

posted @ 2021-08-13 16:57  多测师-星sir  阅读(609)  评论(0)    收藏  举报