直接进入正题:
简而言之,言而总之,其实三次握手就是建立链接,四次挥手就是断开连接,这就是为什么说tcp比udp安全可靠的原因,由于udp是面向无连接,发送数据包时,无须知道自己的报文是否到达对方。而tcp不同 tcp有重传机制,1、格式化的信息流 2、提供可靠的数据传输
我们来看看用户与服务器tcp的建立过程
在tcp连接中,谁是请求端谁就是主动放,而对端就是监听(被动方)
建立过程:三次握手
1、建立通道的时候,客户端首先会向服务端发送SYN同步信号,并指明客户端的初始化序列号ISN,此时客户端处于syn_send 状态
首部的同步位SYN = 1,初始序号 ,seq = x ,syn=1报文不能携带数据,但是需要消耗一个序号
2、当服务器收到客户端发送的同步信号SYN后,会将自己的SYN报文作为回答,并且也像客户端一样指明自己的ISN,同时会把客户端的ISN+1作为ACK的值,表示自己已经收到了客户端的SYN同步信号,此时服务器为SYN_REVD状态
确认报文中为SYN = 1 ACK = 1 确认号 ack = x + 1 ,初始seq = y
3、当客户端收到服务器发送过来的SYN同步信号报文后,会发送一个ACK报文,当然还是一样的会将服务器的ISN+1最为ACK的值,表示已经收到了服务器的SYN报文,此时客户端处于establieshed,当服务收到ACK后处于established状态
确认报文中,ack = 1 ,seq=x+1 ack=y+1
自己的简单理解:
为什么需要三次连接,不去用俩次连接
当服务器收到客户端的请求连接后,说明了,客户端的发送没有问题,服务器的接收也没有问题, 服务器自身知道
当客户端收到了服务器的确认后,客户端知道,自己的发送,和接收没有问题,服务的发送和接收没有问题,但是目前情况就是,客户端已经清楚了俩端的情况,但是服务器只知道自己的接收发送没有问题,客户端的发送没有问题 但是不知道客户端的接收报文是否有问题,假设性客户端不会发送给服务一个确认包,那么服务器永远知道客户端的接收问题。
举例:张三找李四去网吧,通过电话告诉了 李四3点去网吧,李四回复张三 欧克 没问题,三点钟,但是张三并未回复李四3点自己能否准时到达,那李四是不是还得打电话个张三确认,
其实就是双方在无论什么的情况下,必须的知道三要素, 客户需求,根据需求写方案 客户确认 最后才能实施