博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP/IP三次握手四次挥手
阅读量:7066 次
发布时间:2019-06-28

本文共 839 字,大约阅读时间需要 2 分钟。

TCP三次握手

所谓握手,也就是建立连接,三次过程。
三次握手旨在连接到服务端的指定端口,进行通信。建立一个TCP连接,需要向客户端和服务端发送三个包。
其中包含同步序列号和确认号以及TCP窗口大小的信息交换。一般触发握手在socket中都是connect()函数触发的
第一次握手:
客户端发送TCP请求, (SYN标记位置1个包,SYN=1,ACK=0 也就是带有SYN标记的TCP包,初始序列号为X,保存在包头的序列号中). 表示客户端需要建立一个TCP连接,这是握手中的第一不,发送请求。
第二次握手:
服务端收到带有SYN标记的TCP包,发送确认包(带有ACK和SYN的数据包,SYN=1,ACK=1,序列号为y是服务端的)此时服务端询问客户端是否准备好数据传输,此时服务器进入SYN_RECV状态。。
第三次握手:
客户端接收到服务端的数据包(ACK+SYN数据包)向服务端发送一个(序列号x+1,ACK=y+1)的数据包,此包发送完毕,客户端和服务器进入ESTAB_LISHED(TCP连接成功)状态,完成三次握手。
TCP四次挥手
TCP连接是双工的,所以每个方向都是单独关闭。当其中一方完成数据传输后可以发送FIN结束。接收到了FIN只是意味着没有这个方向的数据流了
收到FIN的TCP连接可以发送数据,第一个关闭方执行主动动作,另一个执行被动动作。
第一次挥手:
客户端发送FIN请求,说我要关闭TCP连接了,不再传输数据了。 (FIN=1,序列号=n)
第二次挥手:
服务端收到这个请求,并且响应此请求,发送一个ACK包,确认ack为收到的序号+1。
第三次挥手:
服务端关闭TCP连接,向客户端发送FIN消息。
第四次挥手:
客户端接收到消息,发送ACK包确认,并将确认序号seq设置为收到序号+1。


本文来自 luoyan01 的CSDN 博客 ,全文地址请点击:

转载于:https://blog.51cto.com/12910101/2296198

你可能感兴趣的文章
phpweb解析不当加上传漏洞
查看>>
CentOS自动挂载NTFS分区的U盘或者移动硬盘
查看>>
2018-2019-1 20165226 20165310 20165315 实验二 固件程序设计
查看>>
安装windows后grub的恢复
查看>>
android学习总结(20120721)
查看>>
【吾日三省吾身】2015.6.13-涅槃行动第二十六天
查看>>
Java实现二分插入排序
查看>>
thinkphp-删除delete函数
查看>>
SQL-25 获取员工其当前的薪水比其manager当前薪水还高的相关信息
查看>>
提升服务器安装:自定义history命令历史功能
查看>>
大容量导入和导出数据 -- bcp实用工具
查看>>
操作系统内存配置overcommit_memory
查看>>
linux内核管理--之定制一个属于自己的小型系统
查看>>
我的友情链接
查看>>
JS页面跳转
查看>>
virtualenv安装问题
查看>>
20非常有用的Java程序片段(6-10)
查看>>
我的友情链接
查看>>
java、数据库中命名规则
查看>>
Linux 命令行发邮件sendmail,mailutils,mutt msmtp
查看>>