首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TCP三次握手和四次挥手到底是什么?

什么是TCP?

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。

TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

TCP主要负责什么?

以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信问题。

那以太网协议中多个局域网的通信怎么办?

这就需要IP协议了。

IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,确保两者独立发展。端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

IP 协议有自己的独特的地址规则,称为 IP 地址。它实现了路由功能,允许某个局域网的 A 主机,向另一个局域网的 B 主机发送消息。

路由的原理并不复杂,基本上的原理很简单。所有的路由器,背后都有几个网口,可以接入多个网线。路由器内部有一张路由表,规定了 A 段 IP 地址走出口一,B 段地址走出口二,......通过这套"指路牌",实现了数据包的转发。

IP 协议只是一个地址协议,无法保证数据包的完整。倘若路由器丢包(比如缓存满了,新进来的数据包就会丢失),可以迅速找到丢的那个包,并重新发送这个包。这就会用到TCP协议。

通俗来说,TCP 协议的作用是,保证数据通信的完整性和可靠性,防止丢包。

提到TCP我们会想到三次握手和四次挥手,那网盾运维小哥们都在说的TCP三次握手和挥手到底是什么呢?

TCP三次握手:

第一次握手

客户主动(active open)去connect服务器,并且发送SYN 假设序列号为J,

服务器是被动打开(passive open);

第二次握手

服务器在收到SYN后,它会发送一个SYN以及一个ACK(应答)给客户,

ACK的序列号是 J+1表示是给SYN J的应答,新发送的SYN K 序列号是K;

第三次握手

客户在收到新SYN K, ACK J+1 后,也回应ACK K+1 以表示收到了,

然后两边就可以开始数据发送数据了。

简单理解就是:第一次握手就相当于给女神打电话,第二次握手呢就是女神接了电话,第三次握手就是女神给你回话了,你很高兴,然后就继续和女神聊电话啦。

TCP四次挥手:

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。

为什么要四次挥手:

服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK 和 FIN 一般都会分开发送,从而比三次握手导致多了一次。

咱们这里也还是简单来说:

四次挥手就是你和女神在聊天,聊天聊着很晚了,你想要休息了,累了,

(第一次挥手)就跟女神说,我累了不如今晚就先不聊了吧

(第二次)女神闹脾气说,那你睡吧,休息吧

(第三次)女神不甘心,再问一次,你真的不理我要去睡了吗

(第四次)我回答,嗯嗯,我要睡了,养好身体陪你爆肝

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210120A0A7CO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券