TCP连接建立/断开
首先粗略了解一下TCP数据段的格式
其中URG、ACK、PSH、RST、SYN、FIN是六个控制位
建立连接的过程:三次握手
1.客户端发出段1,SYN位表示连接请求。序号是1000,这个序号在网络通讯中用作临时
的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正
确顺序,也可以发现丢包的情况,另外,规定SYN位和FIN位也要占一个序号,这次虽然没发数据,但是由于发了SYN位,因此下次再发送应该用序号1001。mss表示最大段尺寸,如果一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。2.服务器发出段2,也带有SYN位,同时置ACK位表示确认,确认序号是1001,表示“我
接收到序号1000及其以前所有的段,请你下次发送序号为1001的段”,也就是应答了客户端
的连接请求,同时也给客户端发出一个连接请求,同时声明最大尺寸为1024。3.客户端发出段3,对服务器的连接请求进行应答,确认序号是8001。
在这个过程中,客户端和服务器分别给对方发了连接请求,也应答了对方的连接请求,
其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为’‘’三
方握手(three-way-handshake)”’。在建立连接的同时,双方协商了一些信息,例如双
方发送序号的初始值、最大段尺寸等。
数据传输的过程:
1.客户端发出段4,包含从序号1001开始的20个字节数据。
2.服务器发出段5,确认序号为1021,对序号为1001-1020的数据表示确认收到,同时请
求发送序号1021开始的数据,服务器在应答的同时也向客户端发送从序号8001开始的10个字
节数据,这称为piggyback。3.客户端发出段6,对服务器发来的序号为8001-8010的数据表示确认收到,请求发送序
号8011开始的数据。
关闭连接的过程:四次握手
1.客户端发出段7,FIN位表示关闭连接的请求。
2.服务器发出段8,应答客户端的关闭连接请求。
3.服务器发出段9,其中也包含FIN位,向客户端发送关闭连接请求。
4.客户端发出段10,应答服务器的关闭连接请求。
TCP连接建立/断开相关推荐
- 网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)
TCP协议 TCP通信时序 下图是一次TCP通讯的时序图.TCP连接建立断开.包含大家熟知的三次握手和四次握手. TCP通讯时序 在这个例子中,首先客户端主动发起连接.发送请求,然后服务器端响应请求, ...
- 【Java 网络编程】TCP 连接 断开 机制 ( 三次握手 | 四次挥手 )
文章目录 I TCP 连接建立流程 ( 三次握手 ) II SYN 和 ACK 中的随机值 III TCP 连接建关闭流程 ( 四次挥手 ) IV TCP 连接断开的保证 V 四次挥手的必要性 I T ...
- TCP连接建立与终止,及状态转换
TCP连接建立 三路握手 三路握手发生在客户端发起connect请求到服务端accept返回中,在三路握手发生前,服务端 必须准备好接受外来连接,这通常通过服务端调用 (socket.bind.lis ...
- 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )
文章目录 一.TCP 连接管理 二.TCP 连接建立 三.TCP 连接建立 相关报文段 字段 四.SYN 洪泛攻击 五.TCP 连接释放 一.TCP 连接管理 TCP 传输数据过程 : 建立连接 -& ...
- linux的基础知识——TCP异常断开
1.TCP异常断开 1.1 心跳检测机制 1.2 设置TCP属性
- TCP 连接建立 故障排查
TCP连接的状态详解以及故障排查 我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助. 1.TCP状态 了解TCP之前,先了解几个命令: linux查看tcp的状态命令: 1) net ...
- TCP连接建立与断开
TCP协议头 TCP基本协议头占用20个字节,协议中Header Length(4bits)中标明协议头的长度,含义是多少个32bit数据,该字段占用4位,所有整个tcp头最多可以占用60字节. TC ...
- go 监测tcp 连接断开_TCP三次握手和四次挥手以及11种状态
三次握手 置位概念:根据TCP的包头字段,存在3个重要的标识ACK.SYN.FIN ACK:表示验证字段 SYN:位数置1,表示建立TCP连接 FIN:位数置1,表示断开TCP连接 三次握手过程说明: ...
- TCP连接建立与释放
tcp建立连接 tcp连接的建立需要经历"三次握手"的过程.过程如下 client发送SYN包(值为j)以及SEQ包到server端,此时client进入SYN_SEND状态.此为 ...
最新文章
- 互联网对erp行业到底有什么影响
- 如何让Jupyter Notebook支持pytorch、tensorflow
- 3根机械手指打《超级马里奥》登上Science子刊
- vs 调试 无法加载自定义可视化工具_推荐 5 款好用的REST API工具
- 利用CSS让元素垂直居中的两种实现方法
- rest风格的get加密字符串怎么接收_RESTful Api的设计与风格,你该学一下咯
- php版谁是卧底,机器人陪你玩“谁是卧底quot;游戏
- 栈2——局部变量要初始化的原因
- 程序员 30 岁前,该如何规划自己的职业发展?
- 测试面试题集-Python三局两胜小游戏
- Cherry,你会喜欢这种手机!
- webstorm 去点右边白线
- 学习自查:目录(更新中...)
- 语料库资源————(一)
- 冰点文库下载器V3.1.4
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java文创产品推荐系统设计与实现95ml5
- matlab sor解线性方程组,解线性方程组的SOR迭代法及其MATLAB实现.pdf
- Android N - Data Saver
- 【有福利,手慢无】相册网送您免费洗50张照片
- Android Rotating Image Wallpaper 自动切换壁纸
热门文章
- 工信部敏感权限Android端排查快速检索
- 将Openwrt路由器配置为无线交换机,实现同网段无线中继功能
- 最新Java面试知识点
- HDU 3440 House Man (差分约束)
- Codeforces 955C Sad powers
- 电路板故障排查与维修
- ImportError: cannot import name ‘calinski_harabaz_score‘ from ‘sklearn.metrics‘
- 【Vue3】vue3全解
- 台式计算机是第几代,台式机内存条怎么辨别是几代的?
- Bootstrap typeahead使用问题记录及解决方案