网络相关之TCP(有趣的对话)
有个大牛同学,每次谈到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(有趣的对话)相关推荐
- 开发中最全网络相关内容
iOS中网络相关内容 声明:部分图片来源于网络,有些内容也来自各个平台老师讲解的视频,部分内容来自<计算机网络>这本书中,除去参考其他博客链接外,其他部分不作出参考链接来源展示,如有相关原 ...
- 前端开发基础——网络相关(TCP、UDP、HTTP等)
文章目录 网络分层模型 TCP和UDP 什么是TCP/IP.TCP.UDP TCP和UDP的区别 TCP三次握手 TCP四次挥手 HTTP和HTTPS HTTP和HTTPS的区别 HTTP请求头 HT ...
- TCP/IP和网络相关知识
1.网络相关知识 1.1 七层定义 无(物理层):主要定义物理设备的标准,传输比特流数据 数(数据链路层):对物理层数据进行Mac地址的封装和解封装.数据叫做帧 网(网络层):Ip地址的封装和解封装. ...
- 【网络基础概念】: 网络相关硬件、TCP/IP四层协议模型、OSI七层协议模型。
# 时人不识凌云木,直待凌云始道高 # 大家好,我是码辣,是一只正在努力的小小猿一枚,希望大家多多关照 ^v^. # 初次见面,希望大家能够喜欢.(如果你认为文章可以,别忘一键三连呀!嘿嘿. # 有什 ...
- 27 网络通信协议 udp tcp
四 网络通信协议(互联网协议) 第二天再讲这里,大家第二天再看这里把~~~ 网络通信协议是网络传输的灵魂,非常重要,协议即准则,准则是传输消息的格式要求,那么我们从电脑上发出一个消息,到底是以什么样的 ...
- Python网络编程之TCP服务器客户端(二)
传输控制协议(官方术语为TCP/IP协议)是互联网的重要组成部分.TCP的第一个版本是在1974年定义的,它建立在网际层协议(IP)提供的数据包传输技术之上.TCP使得应用程序可以使用连续的数据流进行 ...
- lLinux网络相关命令,防火墙介绍及相关命令
2019独角兽企业重金招聘Python工程师标准>>> 10月25日任务 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfi ...
- Linux centos7 Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法
一. Linux网络相关 yum install net-tools ifconfig查看网卡ip ifup ens33开启网卡 ifdown ens33关闭网卡 设定虚拟网卡ens33:0 mii- ...
- 七周三次课(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 ...
最新文章
- mount windows目录
- java 等待几秒_Java并发编程synchronized相关面试题总结
- mysql存储过程中as_Mysql存储过程中的delimiter
- android studio编译找不到程序包,【图片】哥哥们,android studio 打包的安装包手机无法识别怎么破【androidstudio吧】_百度贴吧...
- java stop和int,JAVA并发任务中止的isinterrupted,interupted()
- HTML5与HTML4的区别(译文)
- 详解图示+例题演练——BF算法+KMP算法基本原理
- ERP项目实施记录09
- 16进制颜色与UIColor互转
- myfiles_WINDOWSXP-KB936929-SP3-X86-CHS.zip
- MATLAB学习笔记 imagesc函数使用
- SQLHelper类方法介绍及简单使用
- Science Word安装教程附下载链接
- stm32毕业设计 单片机车牌识别系统
- 购物全返模式是什么?解析购物的盈利模式
- 02百万架构师核心技术设计实践
- 苹果iOS系统下的推送机制及实现
- linux离线安装snap应用,Ubuntu使用snap安装常用软件
- php修改根目录,phpStudy如何修改端口或WWW目录(网站根目录)
- 面对SDN,我们怎么办?