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又送达到服务器,那么这个时候服务端会误认为客户端又发起了一个新的请求,那么这个时候服务端就会认为是两个链接状态,客户端端会认为是一个链接就会导致两个端状态不一致
总结,所以就会采用三次握手进行确认,就是为了解决网络信道不稳定

浙公网安备 33010602011771号