IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP三次握手与四次挥手 -> 正文阅读

[网络协议]TCP三次握手与四次挥手

一、TCP报文格式

TCP(Transmission Control Protocol)传输控制协议是一种面向连接的、可靠的、基于字节流的传输层协议

TCP首部承载这TCP协议需要的各项信息,下面我们来分析一下:

  • TCP端口号
    TCP的连接是需要四个要素确定唯一一个连接:
    (源IP,源端口号)+ (目地IP,目的端口号)
    所以TCP首部预留了两个16位作为端口号的存储,而IP地址由上一层IP协议负责传递
    源端口号和目地端口各占16位两个字节,也就是端口的范围是2^16=65535
    另外1024以下是系统保留的,从1024-65535是用户使用的端口范围

  • TCP的序号和确认号
    32位序号 seqSequence number 缩写seq ,TCP通信过程中某一个传输方向上的字节流的每个字节的序号,通过这个来确认发送的数据有序,比如现在序列号为1000,发送了1000,下一个序列号就是2000。
    32位确认号 ackAcknowledge number 缩写ack,TCP对上一次seq序号做出的确认号,用来响应TCP报文段,给收到的TCP报文段的序号seq加1。

  • TCP的标志位
    每个TCP段都有一个目的,这是借助于TCP标志位选项来确定的,允许发送方或接收方指定哪些标志应该被使用,以便段被另一端正确处理。
    用的最广泛的标志是?SYNACK?和?FIN,用于建立连接,确认成功的段传输,最后终止连接。

    1. SYN简写为S,同步标志位,用于建立会话连接,同步序列号;
    2. ACK简写为.,确认标志位,对已接收的数据包进行确认;
    3. FIN简写为F,完成标志位,表示我已经没有数据要发送了,即将关闭连接;
    4. PSH:简写为P,推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队;
    5. RST:简写为R,重置标志位,用于连接复位、拒绝错误和非法的数据包;
    6. URG:简写为U,紧急标志位,表示数据包的紧急指针域有效,用来保证连接不被阻断,并督促中间设备尽快处理;

TCP报文格式TCP三次握手、四次挥手

二、 三次握手

三次握手,为什么要三次握手,两次握手不行吗?

TCP/IP协议是传输层的一个面向连接的安全可靠的传输协议,三次握手的机制是为了保证能建立一个安全可靠的连接。

第一次握手由客户端发起,客户端会向服务端发送一段报文,在报文里面SYN位标志位是置1的,当服务端收到这段报文之后,就知道客户端要给我发起一段新的连接,于是,服务端就向客户端发起一个确认消息包,这个消息包里面ACK位置1。

以上两次握手之后,对于客户端而言,已经知道了所有的信息,我既能给服务端发消息,我还能收到服务端的消息,但是,对于服务端而言,两次握手是不够的,因为到目前为止,服务端只知道一件事情,就是客户端给我的消息,我能收到,但是,我发给客户端的消息,客户端能不能收到不知道。

所以,还需要进行第三次握手。第三次握手就是,当客户端收到服务端,发过来的确认消息的报文之后,还要继续给服务端一个回应,也是一个ACK位置1的确认消息。通过以上三次握手,不管是服务端还是客户端,都彼此知道了,我既能给对方发消息,也能够收到对方的消息,那么这个连接就可以被安全的建立了。

三、四次挥手

为什么要进行四次挥手?

四次挥手也是由客户端首先发起的,客户端会发起一段报文,在报文里面,FIN位标志位置1,当服务端收到这段报文之后,我就知道了客户端想要跟我断开连接,

但是,此时,服务端不一定能做好准备,因为当客户端发起断开连接的消息的时候,对于服务端而言,它极有可能还有未发送完的消息需要继续发送,

所以,此时对于服务端而言,只能进行消息确认,我先告诉客户端,我知道你要跟我断开连接了,但是,我这边还没有做好准备,你先等我一下,等会我会告诉你。

发我消息确认包之后,可能稍过片刻,它就会发送一个FIN位,置1的断开连接的报文,是由服务端发送给客户端的,这个报文表示了,服务端已经做好了断开连接的准备,

当这个报文发送给客户端的时候,客户端同样要给服务端发送一个ACK位置1的消息确认的报文。

一共有四次,通过这四次的相互沟通和连接,我就知道了不管是服务端,还是客户端都已经做好了断开连接的准备,于是连接就可以被断开了。

这是我对三次握手和四次挥手的一个理解。

视频教程视频教程

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 19:10:26  更:2021-09-11 19:12:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:51:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码