我理解的三路握手
来源:互联网 发布:c4d r18 for mac迅雷 编辑:程序博客网 时间:2024/05/20 21:19
建立一个TCP连接时会发生三路握手的情形。
(1)一般都是客户主动发起连接,称为 主动打开 active open。客户先调用socket函数创建一个套接字,做了相应的初始化工作之后,然后调用connect函数向相应的服务器发起连接,此时客户TCP发送了一个SYN同步分节,这个同步分节告诉服务器,客户将在(待建立的)连接中发送的数据的初始序列号。在连接建立之前,connect函数会阻塞。
(2)一般而言,在客户发起连接之前,服务器已经准备好了接受外来的连接,这是通过调用socket、bind、listen函数来完成的,我们把服务器的这种等待客户发起连接的行为称作 被动打开 passive open。服务器接下来会调用accept函数,服务器进程在accept调用中被投入睡眠,它等待某个客户连接的到达并被内核接受。等到服务器接受到客户发来的同步分节后,必须做相应的 确认 ACK。若客户发送的SYN初始序列号为J,则服务器的ACK确认号为J+1。与此同时,服务器也带发送一个SYN 同步分节,这个SYN含有服务器将在同一连接中发送的数据的初始序列号,设为K。注意,服务器是在一个分节中发送SYN和ACK的。(要是分两次发送,就不是三路,而是四路握手了)
(3)客户接收到服务器的SYN及ACK之后,必须也要做相应的确认,即发送ACK至服务器,此时的确认号为K+1。
以上即为TCP连接时的三路握手。
握手完毕之后,服务器的accept函数返回,返回值是一个称为 已连接描述符 connected descriptor的新描述符(一般程序均作connfd)。该描述符用于与新近连接的那个客户通信。accept函数为每个连接到本服务器的客户返回一个新描述符。然后服务器的read函数处于阻塞状态。
- 我理解的三路握手
- tcp的三次握手我能否这样理解???
- TCP连接的三路握手
- tcp 三握手和四挥手理解
- 我对分层的理解(三)
- 我所理解的RxJava(三)
- 理解tcp的三次握手
- 三次握手的简单理解
- TCP三次握手的理解
- TCP三次握手的理解
- 看书理解的tcp握手
- tcp 三路握手过程
- TCP的三路握手和四路挥手
- TCP三次握手和四次握手最直接的理解
- TCP三次握手和四次握手最直接的理解
- 关于TCP三次握手和四次握手的趣味理解
- TCP连接3次握手的理解
- 这样理解TCP/IP的三次握手
- bat 导出mysql数据库数据
- Java基础知识整理(二)- 抽象类与接口
- PCB设计的一般原则
- OCP-1Z0-053-V12.02-56题
- Android Fragment使用和学习
- 我理解的三路握手
- C++中OOP个性的地方之一
- 设计模式:适配器模式(7.1.2)C++版
- CODE 104: Divide Two Integers
- android手机的刷机
- 网页编码就是那点事
- C++/C const问题
- Java学习第六课 JAVA 文件操作
- cannot call methods on button prior to initialization; attempted to call method 'toggle' 解决