tcp抓包返回fin_TCP/IP学习二TCP链接建立与断开

今天详细学习下TCP链接的三次握手四次挥手,因为开发web服务还是会经常遇到一些网络问题的。其实这方面的资料很多,可能我们看过很多次但也忘了无数次[捂脸],这次我主要通过抓包例子来展示这个过程。

  • TCP传输控制协议(TransmissionControlProtocol)

他的特点是基于流、提供可靠数据传输,先建立连接再传输数据。提供如超时重传、流控等各种机制,这样的特点同时也导致了tcp会使用更多的连接,占用更多的资源。UDP则是直接发送数据,不保证数据的到达与接收。我们再把这个流程图拿过来瞅瞅。

d95c80e1ef4439198d73388e9ac9c027.png

TCP建立与断开

  • 三次握手
0b605e7970dd1487b13516cd90fd09d0.png

三次握手

这里我用本机50319端口请求远端80服务, 能清楚的看到三次TCP的连接,你是否有疑问为什么是三次,不是两次,不是四次,其实这里是兼容安全与效率。

我们说TCP数据保证基于SYN与ACK的存在,其实这里明显看到请求号72(也就是80->50319的回复)是将SYN+ACK合为了一条数据返回,这里我想应该可以拆开吧,但是拆开浪费一次链接。所以这里建立连接需要三次。

再来说下三次握手:

小明:你好丽丽,在吗?我是小明 请求号65 50319---->SYN(Seq=0)------>80

小丽:你好小明,我在呀~~ 80->SYN+ACK(Seq=0,Ack=1)-->50319

小明:好的,那我们开始谈谈心吧!! 50319->ACK(Seq=1, Ack=1)---->80

小丽:[爱慕] Established

小明:[送心] Established

  • 四次挥手
6b014ad5b85d73fffba71ec51d028b03.png

四次挥手

这里先说明一点,HTTP1.1之后能自带keep-alive属性,也就是说同一个客户端的http请求可以共用一个tcp连接,这样能防止tcp连接的浪费,截图说明

800f7620d3fd2a056c36d72f6f632773.png

HTTP keep-alive

我们在测试的时候可以关闭这个keep-alive, 在请求的时候设置connetion:close就可以了,这样可以方便我们抓包验证。如果开着的话,当前的tcp连接就不会立刻断开的截图说明

57ea951d3a2038cf8e13a5dbdc88e971.png

postman 关闭keep-alive

再说回四次挥手,我们看到请求号(212)80->56427发送FIN标识的消息,这代表80端要结束连接了,56427->80回复了ACK,请求号(214), 随后呢56247->80发送FIN标识请求号(215),代表自己也没有消息发送可以结束了,随后请求号(216)80->56247发送ACK确认,至此连接关闭。

.......

小明:好吧,我说完了! 80-----FIN----->56427

小丽:嗯嗯! 56427------ACK--->80

小丽:我也没话说了! 56427-----FIN----->80

小明:再见!!! 80-----ACK----->56427

小明:[流泪]closed!!

小丽:[吐]closed!!

那为啥是四次挥手呢,如果是三次就像连接建立一样将最后56427->80的ACK+FIN合并为一条可以吗,当然不可以,这是因为TCP的连接双方能发消息也能接受消息,FIN的发出代表本方将关闭消息发送,而无法确认对方是否还有消息发送过来,估需要双方分别确定已关闭消息发送。

  • 关于状态的说明

这里我们在服务端加入sleep操作限制连接的立刻断开如代码

<?phpsleep (60);echo "hello World ";

我们观察下链接状态的变化

服务端状态流转:

LISTEN->SYN-RECEIVED->ESTABLISHED->CLOSE-WAIT->LAST-ACK->CLOSED

客户端状态流转:

SYN-SENT->ESTABLISHED->FIN-WAIT1->FIN-WAIT2->TIME-WAIT->CLOSED

91998b1e2847f743ce317cca87030c37.png
df73b662f86ccc8e8b2384c275cd92b7.png

这里可能跟上面说的有差别,是因为我们这里是80主动关闭的连接。另外有些状态流转太快,我根本看不到啊[吐血]

状态我还需要再学习学习,里面的玩意太多了,下个分享,我们找一些例子来学习下,重点是TIME_WAIT、2SML啥的。

总结:

  • TCP的消息可靠性通过SYN+ACK实现
  • TCP三次握手+四次挥手是有原因的
  • TCP的连接双方都有各自的状态流转
  • 要通过一些工具如netstat、tcpdump去实际查看网络连接状况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

70%的单身女孩都是这样想的!

1 父爱如山&#xff0c;山就是杵在那里一动不动&#xff01;2 3 单身的女孩不要着急4 哎呀&#xff0c;没有两条小鱼干是起不来了&#xff01;5 一分钟教你画二哈&#xff0c;这次真的厉害了&#xff01;6 披着羊皮的狼&#xff1f;&#xff1f;&#xff1f;你点的每个赞&#…

.NET基金会讨论 .NET 开源事业之路

【编者按】从闭源走向开源&#xff0c;.NET 背后都发生了哪些有趣的故事。本文采访了 6 位微软 .NET 团队成员&#xff0c;分享他们在 GitHub 以及建立 .NET 开源项目的经历。作者 | Richard Lander 译者 | 弯月出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff0…

Process Explorer 15.2:微软增强型任务管理器

Process Explorer 是一款免费的增强型任务管理器&#xff0c;同时也是微软著名工具包Sysinternals下的组件之一。 Process Explorer 能让使用者了解看不到的在后台执行的处理程序&#xff0c;可以使用 Process Explorer 方便地管理你的程序进程。Process Explorer 已经完美的支…

号称最强“抓取”工具,没有搞不到的资源!

全世界只有3.14 % 的人关注了爆炸吧知识分享一个超级好用的工具&#xff0c;绝对用心挑选&#xff0c;让你惊艳&#xff01;不仅帮你赚钱&#xff0c;还能完善生活的方方面面。“能轻松赚钱&#xff0c;真的超爽&#xff01;”好朋友雪球&#xff0c;前段时间负责一个市场营销的…

oracle cpu 100%原因,oracle 12.1 cpu 100%

查看整体负载cpu使用居高不下;基本上整体CPU是百分80%以上了;此时:物理读600MB/s,REDO也不算太高;全为latch free,一般为bug高发区检查相关SQL基本为系统SQL:4b4wp0a8dvkf0,11bzv8fm87zvr,3uqkkfu1crw8y,frjd8zfy2jfdq,8mdz49zkajhw3相关BUG:1 Frequent Execution of Recursive…

C#多线程开发-处理子线程中的异常

C#多线程开发-处理子线程中的异常在平时的多线程开发中&#xff0c;对于异常的处理是至关重要的&#xff0c;千万不能马虎。如果在实际的项目中&#xff0c;对于某些线程中的异常没有处理&#xff0c;会直接导致整个程序崩溃&#xff0c;软件无法使用。其中需要说明的是&#x…

GAC及其作用

http://www.cnblogs.com/smallstone/archive/2010/06/29/1767508.html 一、GAC的作用 全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly&#xff0c;例如System.Data、System.Windows.Forms等等。这样&#xff0c;很多程序就可以从GAC里面取得…

高校教师抄袭豆瓣博主文章,学校证实:基本属实!记过并调离教学科研岗位...

全世界只有3.14 % 的人关注了爆炸吧知识导读作为高层次人才被杭州市引进&#xff0c;并于杭州师范大学任教的教师郭某某最近陷入了一则被指博士论文涉嫌抄袭豆瓣网友事件&#xff0c;近日&#xff0c;学校调查后证实。本文来源&#xff1a;募格学术综合自&#xff1a;红星新闻 …

linux默认归档目录,Linux系统管理(第4章:目录和文件管理二)

Linux系统管理(第4章&#xff1a;目录和文件管理二)一.练习文件查看及检索操作1.查看/etc/filesystems文件&#xff0c;确认当前系统支持的文件系统类型Cat&#xff1a;用于连接多个文件的内容&#xff0c;更多用于查看文件内容2.分页查看/etc/services文件&#xff0c;了解各种…

一组动图看懂3D打印原理

全世界只有3.14 % 的人关注了爆炸吧知识3D打印是制造业领域的一项新兴技术&#xff0c;被称为“具有工业革命意义的制造技术”。近年来&#xff0c;随着工业技术的进步&#xff0c;3D打印技术得到迅速发展并得到媒体的广泛关注&#xff0c;各类3D打印技术被纷纷报道。下面&…

生产者消费者_【线程通信】生产者消费者模型

1生产者消费者模型介绍生产者消费者模型&#xff0c;是每一个学习多线程的的人都需要知道的模型; 大致情况就是&#xff1a;有两个线程&#xff0c;一个负责生产产品&#xff0c;一个消费产品&#xff0c;两者公用同一块内存区域&#xff0c;也就是产品放在了同一块内存上面&am…

在Orchard中使用Image Gallery模块

作为ASP.NET MVC领域一款优秀的开源CMS&#xff0c;Orchard值得所有.NET Web开发人员学习和研究&#xff0c;然后二次开发&#xff0c;最后在其基础上创新。也是遵循国内人员学习IT技术的路线&#xff1a;引进->吸收->消化。 Orchard有很多优秀的功能&#xff0c;在此不一…

Dapr + .NET 实战(十二)服务调用之GRPC

欢迎大家参加4小时Dapr.NET 5的实战课程课程链接 https://ke.qq.com/course/4000292?tuin1271860f什么是GRPCgRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。gRPC 的主要优点是&#xff1a;高性能轻量级 RPC 框架。协定优先 API 开发&#xff0c;默认使用协议缓冲…

SCVMM 2012 R2运维管理九之:添加非信任的Hyper-v主机和群集

SCVMM 2012 R2运维管理九之&#xff1a;添加非信任的Hyper-v主机和群集之前的博文中我们为各位朋友介绍了如何向SCVMM中添加受信任的Hyper-v的主机和群集&#xff0c;相信大家也都已经有了一个比较深刻的理解&#xff0c;那么今天的博文中就来和大家聊聊:如何添加非受信任的Hyp…

走访近20家代工厂后:近千块的大牌T恤,成本只要几十块

▲ 点击查看“很多人都知道大牌有溢价但是不知道大牌溢价逼近900%打个比方一件1000块的T恤&#xff0c;T恤成本如果是100那么剩下的900&#xff0c;算是买了个大牌logo”这是我们上个月去到的一家中国代工厂工厂内部人员向我们透露的他说&#xff0c;其实无论是纪梵希、爱马仕、…

公开征集 | 每个人都可以成为 COSCon'21 主论坛的开源明星

“ 点击蓝字 / 关注我们 ”| 作者&#xff1a;COSCon21 组委会| 编辑&#xff1a;钱奕| 设计&#xff1a;朱亿钦| 责编&#xff1a;沈于蓝在开源的世界里&#xff0c;我们常常说 Community &#xff1e; Code&#xff08;社区重于代码&#xff09;&#xff0c;Community 一词在…

linux 编写脚本示范,Linux-scripts-简单脚本和脚本的执行

9.Scripts9.1什么是 Shell scriptsshell script 是利用 shell 的功能所写的一个『程序 (program)』&#xff0c;这个程序是使用纯文本文件&#xff0c;将一些 shell 的语法与指令(含外部指令)写在里面&#xff0c;搭配正规表示法、管线命令与数据流重导向等功能&#xff0c;以达…

被质疑“在开源社区执行微软意愿”,.NET 基金会前董事为其提交的 PR 道歉并辞职...

编译&#xff5c;燕珊.NET基金会最近“不太平”。上周五&#xff0c;.NET 基金会执行董事 Claire Novotny 在其成员反对她对其中一个项目的干预后&#xff0c;为自身的行为道歉并宣布辞去职务。巧合的是一个多月前&#xff0c;董事会成员 Rodney Littles II 因与基金会的目标方…

hadoop扩充磁盘操作记录

记录cloudera扩充磁盘1、4台主机&#xff0c;每台主机增加一块2TB的硬盘2、首先简单说明步骤A、分区&#xff0c;挂载&#xff08;挂载目录&#xff08;名称&#xff0c;路径&#xff09;要一致&#xff09;B、在挂载的分区内&#xff0c;建立对应的文件夹&#xff0c;并授权C、…

单身两年以上是什么体验?

1 单身两年以上是什么体验&#xff1f;2 这群熊孩子&#xff0c;不当演员可惜了。。3 我要出去&#xff01;我要见园长&#xff01;我为幼儿园立过功&#xff01;我为幼儿园卖过萌&#xff01;4 当心&#xff01;陷阱&#xff01;&#xff01;5 一位主人抓拍下了自家的柴犬宝宝…