首先粗略了解一下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连接建立/断开相关推荐

  1. 网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)

    TCP协议 TCP通信时序 下图是一次TCP通讯的时序图.TCP连接建立断开.包含大家熟知的三次握手和四次握手. TCP通讯时序 在这个例子中,首先客户端主动发起连接.发送请求,然后服务器端响应请求, ...

  2. 【Java 网络编程】TCP 连接 断开 机制 ( 三次握手 | 四次挥手 )

    文章目录 I TCP 连接建立流程 ( 三次握手 ) II SYN 和 ACK 中的随机值 III TCP 连接建关闭流程 ( 四次挥手 ) IV TCP 连接断开的保证 V 四次挥手的必要性 I T ...

  3. TCP连接建立与终止,及状态转换

    TCP连接建立 三路握手 三路握手发生在客户端发起connect请求到服务端accept返回中,在三路握手发生前,服务端 必须准备好接受外来连接,这通常通过服务端调用 (socket.bind.lis ...

  4. 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )

    文章目录 一.TCP 连接管理 二.TCP 连接建立 三.TCP 连接建立 相关报文段 字段 四.SYN 洪泛攻击 五.TCP 连接释放 一.TCP 连接管理 TCP 传输数据过程 : 建立连接 -& ...

  5. linux的基础知识——TCP异常断开

    1.TCP异常断开 1.1 心跳检测机制 1.2 设置TCP属性

  6. TCP 连接建立 故障排查

    TCP连接的状态详解以及故障排查 我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助. 1.TCP状态 了解TCP之前,先了解几个命令: linux查看tcp的状态命令: 1) net ...

  7. TCP连接建立与断开

    TCP协议头 TCP基本协议头占用20个字节,协议中Header Length(4bits)中标明协议头的长度,含义是多少个32bit数据,该字段占用4位,所有整个tcp头最多可以占用60字节. TC ...

  8. go 监测tcp 连接断开_TCP三次握手和四次挥手以及11种状态

    三次握手 置位概念:根据TCP的包头字段,存在3个重要的标识ACK.SYN.FIN ACK:表示验证字段 SYN:位数置1,表示建立TCP连接 FIN:位数置1,表示断开TCP连接 三次握手过程说明: ...

  9. TCP连接建立与释放

    tcp建立连接 tcp连接的建立需要经历"三次握手"的过程.过程如下 client发送SYN包(值为j)以及SEQ包到server端,此时client进入SYN_SEND状态.此为 ...

最新文章

  1. 互联网对erp行业到底有什么影响
  2. 如何让Jupyter Notebook支持pytorch、tensorflow
  3. 3根机械手指打《超级马里奥》登上Science子刊
  4. vs 调试 无法加载自定义可视化工具_推荐 5 款好用的REST API工具
  5. 利用CSS让元素垂直居中的两种实现方法
  6. rest风格的get加密字符串怎么接收_RESTful Api的设计与风格,你该学一下咯
  7. php版谁是卧底,机器人陪你玩“谁是卧底quot;游戏
  8. 栈2——局部变量要初始化的原因
  9. 程序员 30 岁前,该如何规划自己的职业发展?
  10. 测试面试题集-Python三局两胜小游戏
  11. Cherry,你会喜欢这种手机!
  12. webstorm 去点右边白线
  13. 学习自查:目录(更新中...)
  14. 语料库资源————(一)
  15. 冰点文库下载器V3.1.4
  16. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java文创产品推荐系统设计与实现95ml5
  17. matlab sor解线性方程组,解线性方程组的SOR迭代法及其MATLAB实现.pdf
  18. Android N - Data Saver
  19. 【有福利,手慢无】相册网送您免费洗50张照片
  20. Android Rotating Image Wallpaper 自动切换壁纸

热门文章

  1. 工信部敏感权限Android端排查快速检索
  2. 将Openwrt路由器配置为无线交换机,实现同网段无线中继功能
  3. 最新Java面试知识点
  4. HDU 3440 House Man (差分约束)
  5. Codeforces 955C Sad powers
  6. 电路板故障排查与维修
  7. ImportError: cannot import name ‘calinski_harabaz_score‘ from ‘sklearn.metrics‘
  8. 【Vue3】vue3全解
  9. 台式计算机是第几代,台式机内存条怎么辨别是几代的?
  10. Bootstrap typeahead使用问题记录及解决方案