Linux网络编程--TCP中的三次握手和四次挥手
服务器编程和客户端编程的大致流程如下:
三次握手是在客户端中的connect中完成的,具体如下:
那么上述说到的SYN ACK这些是什么东西呢?
上述的截图取自《Linux高性能服务器编程》电子版的截图!+
根据书中所提到的在客户端对服务器端connect的时候,由客户端对服务器端发出一个SYN的请求连接的报文,值为i是32位序列号,然后服务器收到客户端SYN之后,会反馈给客户端一个自身服务器端的SYN报文和确认号报文ACK,其中ACK的值为客户端和服务器端的SYN序列号+1,客户端收到服务器端SYN和ACK之后,客户端会给服务器端反馈一个确认号ACK 该ACK的值为服务器端的SYN序列号+1,然后三次握手就完成了!!!
下面来看四次挥手!!!!!!
三次握手就是客户端和服务器连接过程,而四次挥手就是客户端和服务器端断开连接的过程。
上图的过程可以这样理解:
客户端给服务器端发送FIN结束报文,相当于客户端通知服务器端,我要关闭了,然后服务器回复一个确认报文ACK,这时候客户端已经关闭,进程结束了,但是链接系统没释放会维持一段时间,像端口,地址,等信息还在,客户端的这种状态会维持一段固定时间用来四次挥手中的第四次中给服务器端回复ACK确认报文。这段维持时间之内要是没有收到服务器端的FIN的话,客户端这个进程就彻底释放了,那么就自然断开连接了(相当于打电话期间手机关机了,那么通话自然就断开了)!!!
上述就是我对三次握手和四次挥手的理解,大家有什么不同的想法,可以来评论区交流!
Linux网络编程--TCP中的三次握手和四次挥手相关推荐
- 网络编程知识预备(2) —— 三次握手与四次挥手、半连接状态、2MSL
参考:网络编程知识预备(2) --三次握手与四次挥手.流量控制(滑动窗口).拥塞控制.半连接状态.2MSL_行稳方能走远的博客-CSDN博客 目录 一.三次握手 什么是三次握手? 三次握手图解 三次握 ...
- 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
[前提说明] 前段时间突然看到了一篇关于TCP/IP模型的文章,心想这段时间在家里也用wireshark抓了点包,那么想着想着就觉得需要复习一下网络知识,于是就有这篇博文的诞生.当然网上关于TCP相关 ...
- Python常见面试题:TCP 协议中的三次握手与四次挥手相关概念详解
今天来聊聊Python常见面试题中面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手. 涉及到的知识点有: 1.TCP.UDP 协议的区别 2.TCP 头部结构 3.三次握手与四次挥手过程详 ...
- tcp 协议中发送窗口的大小应该是_TCP 协议中的三次握手与四次挥手
今天来聊聊面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手.涉及到的知识点有: 1.TCP.UDP 协议的区别 2.TCP 头部结构 3.三次握手与四次挥手过程详解 4.什么是 TIME_ ...
- 白话解说TCP/IP协议三次握手和四次挥手
白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...
- TCP协议的三次握手和四次挥手
转自:http://uule.iteye.com/blog/2213562 TCP协议的三次握手和四次挥手 博客分类: http/tcp TCP/IP协议三次握手与四次握手流程解析 Http协议三次握 ...
- TCP为什么是三次握手和四次挥手
转载自 TCP为什么是三次握手和四次挥手 为什么建立连接是三次握手断开连接是四次挥手? 三次握手的流程和四次挥手的流程是什么? 三次握手与四次回收分别对应TCP连接与断开过程 tcp报文格式 ...
- TCP 连接的“ 三次握手 ”与“ 四次挥手 ”
TCP 协议简介 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议的作用 互联网由一整套协议构成.TCP 只是其中的一层,有着自己的分工. (图片说明:TCP 是以太网协议和 I ...
- 详解 TCP 连接的“三次握手”与“四次挥手”
详解 TCP 连接的"三次握手"与"四次挥手" 前言 TCP的三次握手(Three-Way Handshake) 1."三次握手"的详解 2 ...
最新文章
- 《Ossim应用指南》入门篇
- struts2+hibernate-jpa+Spring+maven 整合(1)
- APP测试入门之性能测试
- c 调用java的dll_Windows下java调用c的dll动态库--Dev_Cpp编译c生成dll
- HDU 3336 KMP
- 没有终结点在侦听可以接受消息的_IoT Hub入门(3)使用消息路由将原始设备数据记录存档...
- java云端部署_Jelastic Java云端平台
- Zeusee 开源移动端车型识别系统HyperVID
- CHM无法打开解决办法
- CCF CSP202012-2期末预测之最佳阈值
- 零基础转行如何准备一场软件测试面试
- php 阻止ip代码,php – 如何阻止100,000个独立的IP地址
- 2021CentOS7系统Gnome3桌面使用Fcitx
- Window应急响应(七 NesMiner挖矿病毒)
- 成功的软件工程师共有的10个习惯和技能
- Python 汽车之家 车型销量--参数分析与实现
- php搜索引擎开源源码,PHP搜索引擎源代码
- Eclipse BIRT使用之BIRT Designer篇(转)
- js全屏事件,进入全屏,退出全屏操作
- sketch制作Android动画,Sketch制作GIF动画——基础篇(改良版)
热门文章
- 车载网络处理器带来多功能能力
- Android的数据存储方式
- CentOS7环境搭建使用PhpStorm上传代码
- C++ set 的使用
- Activity 数据传递给Fragment
- Unable to inject views for BcFragment{8d4c0 #1 id=0x7f0d00a1}
- mysql 日期和时间戳互换
- 深入理解Java虚拟机——第二章——Java内存区域与内存溢出异常
- [Advance] How to debug a program (上)
- [原创]商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸)