计网-三次握手和四次挥手

TCP建立和断开连接的过程(三次握手和四次挥手)

TCP通信的过程:

问题:tcp是如何保证数据在客户端和服务端之间通信传输的?
分为三个步骤:三次握手,传输数据确认,四次挥手。三次握手是建立连接,而四次握手是断开连接的过程。

Tcp的概念

传输层协议,提供host-to-host数据的可靠传输,支持全双工,是一个连接导向的协议。
主机到主机(host-to-host):一台主机通过tcp发送数据给另一台主机。

Tcp/ip 5层模型

Tcp协议往上是应用到应用的协议。–应用层
Tcp上层的应用层协议使用tcp时,需要知道端口号----用于区分应用–传输层
主机与主机之间通信,需要知道主机们的网络地址(ip地址),但是tcp不负责把实际地址到地址的传输,tcp把ip交给了底层的互联网层进行处理–网络层
互联网层,也叫网络层,提供地址到地址之间的通信。但不负责信号在具体两个设备之间的传递–链路层,当信号在两个设备之间传递时,又需要物理层封装最底层的物理设备,传输介质等提供最底层的传输能力–物理层
综合以上的5层被称为互联网协议群,也称作tcp/ip协议群总结下,主机到主机为应用提供到应用间通信的能力。

什么是连接和会话?

连接–数据传输双方都在线,数据收发双方的内存中都建立一个用于维护数据传输状态的对象,连接是网络行为状态的记录。客户端需要与服务器建立连接。
会话:数据双方聊天窗口,是应用的行为。在有些系统中,会话会自动重连,或帮助创建连接,会话也负责在多次连接中保存状态,比如HTTP session在多次http请求(连接)间保存状态(如用户信息)。

双工和单工

  • 单工:数据只能单向发送,至少一条线路
  • 半双工:某时刻数据向一个方向传输,也可以反方向传输(交替进行),至少一条线路
  • 全双工:任何时刻数据都可以双向收发,需要大于一条线路
    注:这里的线路抽象,并发的处理信号。
    Tcp是一个双工协议,数据在任何时候都可以双向传输。

什么是可靠性?

Tcp是可靠性传输。
可靠性指数据保证无损(原顺序)传输。如果发送方把数据发送给多个接收方—多播,那么所有的接收方都必须收到这个相同的副本。

Tcp的握手和挥手(建立和断开连接)

Tcp的基本操作

  • 如果一个host主动向另一个host发起连接,称为SYN,请求同步
  • 如果一个host主动主动断开请求,称为FIN,请求完成
  • 如果一个host给另一个host发送数据,称为PSH,数据推送

以上3种,接收方收到数据后需要给发送方一个ACK响应,若没有,发送方可能认为自己需要重发这个请求。请求/响应模型是可靠性的要求。

建立连接的过程(三次握手)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为什么要三次握手而不是两次握手?
这是为了防止因为已失效的请求报文,突然又传到服务器,引起错误, 这是什么意思?
假设采用两次握手建立连接,客户端向服务端发送一个syn包请求建立连接,因为某些未知的原因,并没有到达服务器,在中间某个网络节点产生了滞留,为了建立连接,客户端会重发syn包,这次的数据包正常送达,服务端发送syn+ack之后就建立起了连接。
但是第一包数据阻塞的网络突然恢复,第一包syn包又送达到服务端,这时服务端会认为客户端又发起了一个新的连接,从而在两次握手之后进入等待数据状态,服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致,如果在三次握手的情况下,服务端收不到最后的ack包,自然不会认为连接建立成功。
所以三次握手本质上来说就是为了解决网络信道不可靠的问题,为了在不可靠的信道上建立起可靠的连接,经过三次握手之后,客户端和服务端都进入了数据传输状态。

断开连接的过程(四次挥手)

在这里插入图片描述
在这里插入图片描述

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值