简述TCP 三次握手
TCP数据报文结构:
三次握手主要用到了序列号(seq)&确认号(ack)及两个标志位(ACK&SYN):
- seq:序列号和确认号是tcp传输可靠性的关键部分,序列号的随机取值范围为0-2^32-1 关于为什么不使用固定序列号
- ack:下一个希望收到的序列号且代表之前序列号传输的数据已经被正确的收到,此字段只有ACK标志位为1的时候才有效
- ACK:确认标志位,确认序号标志,为1时表示确认号(ack)有效,建立链接后所有数据的ACK都应为1
- SYN:同步/链接标志位---->当SYN=1且ACK=0时,代表这是一个连接请求报文,TCP规定SYN=1时不能携带数据,但要消耗一个序号
三次握手流程:
第一次握手:
客户端向服务器发送一个请求连接报文
报文数据:
- SYN:我(client)想跟你进行连接
- seq:我(client)这条数据的序列号是100
当服务器解析该条报文为连接请求且可以建立连接时触发第二次握手
第二次握手:
服务器向客户端发送同意连接报文
报文数据:
- SYN:我(server)可以跟你(client)进行连接啦
- ACK:你(client)的确认号有效
- seq:我(server)这条数据的序列号是200
- ack:我(server)已经收到你(client)序列号为100的数据了,下次你(client)给我(server)发的数据序列号应该是101哦
此时client已经知道client发送的数据server可以正常收到,且server发送的数据client也可以正常收到,但是server 并不知道client能不能正常的收到server的数据,由此则衍生出第三次握手
第三次握手:
客户端向服务端发送自己收到服务端可以连接的数据了
报文数据:
- ACK:你(server)的确认号是有效的
- seq:我(client)这条数据序列号是你(server)希望我发的101
- ack:我(client)已经收到你(server)序列号为200的数据了,下次你给我发的数据序列号应该是201哦
至此双端已建立稳定的连接了,之后就可以互相发送数据啦~
简述TCP 三次握手相关推荐
- 简述TCP三次握手和四次挥手的过程和理解
简述TCP三次握手和四次挥手的过程和理解 在讲解之前先来熟悉一下TCP报文头部 源端口.目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的, 而一个计算机端口某个时刻只能被一个进 ...
- 简述TCP三次握手,看不懂算我输!
TCP 三次握手 举个例子简单描述下TCP的三次握手: 就举打电话的列子吧. TCP三次握手就是如此. 通过彼此之间发送三个包(过程就如上面对话一样),来确认client与server之间连接是否互通 ...
- 简述TCP三次握手和四次挥手
为了准确无误地把数据送达目标处,TCP 协议采用了三次握手策略. 1.1 TCP三次握手漫画图解 如下图所示,下面的两个机器人通过 3 次握手确定了对方能正确接收和发送消息(图片来源:<图解 H ...
- mysql三次握手_一文彻底搞懂 TCP三次握手、四次挥手过程及原理
原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论 ...
- TCP三次握手、四次挥手过程及原理
TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/I ...
- TCP三次握手在linux内核中的实现
TCP三次握手在linux内核中的实现 以下基于linux内核2.4.0源码(转自www.yuanma.org/) 以前一直使用的网络通讯的函数都是工作在阻塞模式.在看connect实现源码时,突然想 ...
- 使用Wireshark浅析Tcp三次握手
简述 我不想一开始直接搬网络描述图来讲三次握手亦或试图用大量专业词汇让你熟悉它,而是想用简单的描述,让大家对三次握手有个大概的印象.用Wireshark抓包工具分析TCP报文中大家比较关注的syn(S ...
- 【网络】Wireshark分析Netty建链过程( tcp三次握手、osi模型)
文章目录 1. osi模型简述 2. tcp三次握手 3. 验证三次握手 系列文章: <Wireshark分析Netty建链过程( tcp三次握手.osi模型)> <IPV4数据报头 ...
- TCP三次握手和四次挥手的解释
基础知识 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN ...
最新文章
- ssh vim中不小心按下ctrl+s
- linux下gdb常用的调试命令
- 实例27:python
- Python数据挖掘与分析常用库官方文档
- 谁才是世界上最好的 CI/CD 工具?
- 实现两个N*N矩阵的乘法,矩阵由一维数组表示
- 十一、JAVA接口的定义和使用
- atitit.js 与c# java交互html5化的原理与总结.doc
- 中科院信工所 考研面试经验贴
- 20155311《网络对抗》信息搜集与漏洞扫描
- 敏捷团队章程-让团队持续敏捷
- 在线html调试,debugger调试
- ubuntu 12.04中搭建nfs服务器
- python卡通滤镜_纯Python综合图像处理小工具(3)10种滤镜算法
- C# MQTT(MQTTnet)客户端
- osgEarth全景图 29. skyview1.earth
- struct 结构体的内存对齐
- 艺术 NFT 的发展之路
- 基于kmeans聚类算法的微博舆情热点事件分析系统
- 计算机工程学院文艺例会,信息快讯 | 喜迎学代会-信息与计算机工程学院学生会组织召开第二次全体工作例会...