有个大牛同学,每次谈到code相关的问题,他总是讲话很幽默。今天恰巧就看到了一则幽默的对话。

A对话:

“喂,你听的到吗?”

“喂,我听的到呀,你能听到我吗?”

“我能听到你,今天天气很好,balabala……”

B对话:

“喂,你听的到吗?”

“喂,我听的到呀,你能听到我吗?”

“喂,你听的到吗?

“——谁在说话”

“喂,你听的到吗?”

“。。。。。。”

C对话:

“喂,你听的到吗?”

“我听的到呀”“你能听到我吗?”

“——不想跟傻逼说话”

这三个场景作为程序员的你,应该很熟悉,场景A是三次握手,场景B是二次握手,场景C是四次握手。

TCP的三次握手:

第一次握手:建立连接时,客户端发送syn包(seq = j)到服务器,并进入SYN_SENT状态,等待服务器确认,syn包即同步序列编码;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack = j+1),同时自己也发送一个SYN包(seq = k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack = k + 1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,TCP链接成功,完成三次握手;

完成三次握手,客户端和服务端开始传送数据。如下图:

TCP的四次握手(关闭TCP链接)

第一次握手:客户端会发送一个FIN报文给服务器之后会进入FIN_WAIT_1状态等待服务器的响应;

第二次握手:服务器收到了FIN之后,并确认是由客户端发起的,同时也会发送一个ACK=X+1的报文给客户端并进入CLOSE_WAIT状态;

第三次握手:等到客户端接收到ACK报文后,服务器关闭了与客户端的链接,会发送一条FIN报文给客户端;

第四次握手:客户端接收到由服务器发送来的FIN报文,就会关闭与服务器的链接,并且发送ACK给服务器。

TCP建立链接是三次握手,而断开链接是四次握手,这是为什么呢?

链接时,服务器收到客户端的SYN链接请求的报文后,可以直接发送AYN+ACK报文,其中ACK用来响应,SYN用来同步;

关闭链接时,服务器收到SYN报文后,很大可能并不会马上关闭Socket链接,所以只能先回复一个ACK报文,告诉客户端你发送的FIN报文我收到了,只有等到服务器的所有报文发送完了,服务端才会发送FIN报文,所以才需要四次握手。

网络相关之TCP(有趣的对话)相关推荐

  1. 开发中最全网络相关内容

    iOS中网络相关内容 声明:部分图片来源于网络,有些内容也来自各个平台老师讲解的视频,部分内容来自<计算机网络>这本书中,除去参考其他博客链接外,其他部分不作出参考链接来源展示,如有相关原 ...

  2. 前端开发基础——网络相关(TCP、UDP、HTTP等)

    文章目录 网络分层模型 TCP和UDP 什么是TCP/IP.TCP.UDP TCP和UDP的区别 TCP三次握手 TCP四次挥手 HTTP和HTTPS HTTP和HTTPS的区别 HTTP请求头 HT ...

  3. TCP/IP和网络相关知识

    1.网络相关知识 1.1 七层定义 无(物理层):主要定义物理设备的标准,传输比特流数据 数(数据链路层):对物理层数据进行Mac地址的封装和解封装.数据叫做帧 网(网络层):Ip地址的封装和解封装. ...

  4. 【网络基础概念】: 网络相关硬件、TCP/IP四层协议模型、OSI七层协议模型。

    # 时人不识凌云木,直待凌云始道高 # 大家好,我是码辣,是一只正在努力的小小猿一枚,希望大家多多关照 ^v^. # 初次见面,希望大家能够喜欢.(如果你认为文章可以,别忘一键三连呀!嘿嘿. # 有什 ...

  5. 27 网络通信协议 udp tcp

    四 网络通信协议(互联网协议) 第二天再讲这里,大家第二天再看这里把~~~ 网络通信协议是网络传输的灵魂,非常重要,协议即准则,准则是传输消息的格式要求,那么我们从电脑上发出一个消息,到底是以什么样的 ...

  6. Python网络编程之TCP服务器客户端(二)

    传输控制协议(官方术语为TCP/IP协议)是互联网的重要组成部分.TCP的第一个版本是在1974年定义的,它建立在网际层协议(IP)提供的数据包传输技术之上.TCP使得应用程序可以使用连续的数据流进行 ...

  7. lLinux网络相关命令,防火墙介绍及相关命令

    2019独角兽企业重金招聘Python工程师标准>>> ​10月25日任务 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfi ...

  8. Linux centos7 Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法

    一. Linux网络相关 yum install net-tools ifconfig查看网卡ip ifup ens33开启网卡 ifdown ens33关闭网卡 设定虚拟网卡ens33:0 mii- ...

  9. 七周三次课(11月29日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...

    2019独角兽企业重金招聘Python工程师标准>>> 10.11 Linux网络相关 ifconfig 查看网卡ip (yum install net-tools) 安装 -a   ...

最新文章

  1. mount windows目录
  2. java 等待几秒_Java并发编程synchronized相关面试题总结
  3. mysql存储过程中as_Mysql存储过程中的delimiter
  4. android studio编译找不到程序包,【图片】哥哥们,android studio 打包的安装包手机无法识别怎么破【androidstudio吧】_百度贴吧...
  5. java stop和int,JAVA并发任务中止的isinterrupted,interupted()
  6. HTML5与HTML4的区别(译文)
  7. 详解图示+例题演练——BF算法+KMP算法基本原理
  8. ERP项目实施记录09
  9. 16进制颜色与UIColor互转
  10. myfiles_WINDOWSXP-KB936929-SP3-X86-CHS.zip
  11. MATLAB学习笔记 imagesc函数使用
  12. SQLHelper类方法介绍及简单使用
  13. Science Word安装教程附下载链接
  14. stm32毕业设计 单片机车牌识别系统
  15. 购物全返模式是什么?解析购物的盈利模式
  16. 02百万架构师核心技术设计实践
  17. 苹果iOS系统下的推送机制及实现
  18. linux离线安装snap应用,Ubuntu使用snap安装常用软件
  19. php修改根目录,phpStudy如何修改端口或WWW目录(网站根目录)
  20. 面对SDN,我们怎么办?

热门文章

  1. Cracer渗透视频课程学习笔记——漏洞分析
  2. MatLab基础操作
  3. 机器学习入门书籍导读-高等数学上
  4. eclispe使用外部tomcat总结
  5. 元宇宙iwemeta: 2021年云计算行业发展研究报告
  6. 哈佛经济学教授卧底贫民窟8年,揭开穷人最大真相:这比贫穷更可怕
  7. 回归、分类与聚类:三大方向剖解机器学习算法的优缺点
  8. Spring Cloud Alibaba - 04 Nacos 领域模型划分
  9. 白话Elasticsearch65-最少master候选节点以及ES集群脑裂问题
  10. 实战SSM_O2O商铺_12【商铺注册】View层之前台页面