TCP的开放握手也称为
3
次握手(
3
-
way handshake
),因为这通常包括
3
条消息:一条从
客户端到服务器端的
连接请求
,一条从
服务器端到客户端的确认信息
,以及另一条从
客户端到服务器端的确认消息
。
Socket构造函数的调用与客户端连接建立时所关联的协议事件之间的关系:
客户端一收到服务器端发来的确认信息,就立即认为连接已经成功建立。
互联网是一种尽力而为(best
-
effort
)的网络,客户端的起始消息或服务器端的回复消息都可能在传输过程中丢失。出于这个原因,
TCP
协议实现将以递增的时间间隔重复发送几次握手消息。如果
TCP
客户端在一段时间后还没有收到服务器的返回消息,则发生超时并放弃连接。这种情况下,构造函数将抛出
IOException
异常。连接的超时通常比较长,因此要经过几分钟的时间
Socket
构造函数才会失败。
“SYN_SENT
”是在第一条和第二条握手消息之间,客户端状态的专业名称。
客户端底层的数据结构:
服务器Socket
启动:
当客户端的连接请求到来时,将为该连接创建一个新的套接字数据结构。新套接字的地址根据到来的分组报文设置:分组报文的目标互联网地址和端口号(分别为w.x.y.z
和
q
)成为该套接字的本地还联网地址和端口号;分组报文的源地址和端口号(
a.b.c.d:p
)则成为该套接字的远程互联网地址和端口号。注意:新套接字的本地端口号总是与
ServerSocket
的端口号一致。新套接字的状态设置为指示“正在连接(
Connecting
)”(在服务器方,专业术语称为
SYN_RCVD
),并将其添加到
ServerSocket
套接字数据结构所关联的一个未完全连接的套接字列表中。注意:
ServerSocket
自己并不改变状态,其地址信息也不会有任何改变。
除了创建一个新的底层套接字数据结构外,服务器的TCP
实现还要向客户端发回一个
TCP
握手确认信息。
在接收到客户端发来的3
次握手的第
3
条消息之前,服务器端的
TCP
并不会认为握手消息已经完成。第
3
条握手信息到来后,新数据结构的状态则设置为“
ESTABLISHED
”,并将其移动到
ServerSocket
数据结构关联的另一个套接字数据结构列表中,该列表代表了能够通过
ServerSocket
的
accept()
方法进行接收的已成功建立连接。(如果第
3
条握手消息接收失败,最终会将“
Connecting
”状态的数据结构删除。)
服务器程序调用了ServerSocket
的
accept()
方法后,只要其关联的套接字数据结构列表中有新的连接到来,该方法调用就立即停止阻塞。(注意,在调用
accept()
方法时,这个列表可能已经是非空状态。)此时,一个新的连接数据结构将从列表中移出,并为其创建一个
Sokcet
实例,作为
accept()
方法的返回值。
- 大小: 24.6 KB
- 大小: 18.9 KB
- 大小: 14.3 KB
- 大小: 23.8 KB
- 大小: 25.2 KB
分享到:
相关推荐
TCP连接建立
TCP连接建立与终止过程剖析
TCP连接建立与管理[定义].pdf
1.3 TCP连接建立后,数据中心应对数据采集器进行身份认证,具体认证过 程见附录1。 1.4 数据采集器和数据中心中间传输的数据和命令应进行加密,具体加密方 法见附录1。 1.5 身份验证完成后,数据中心通过心跳包...
利用ethereal分析tcp建立与释放过程
传输控制协议(TCP,transmission control protocol)连接建立的“三次握手”过程中涉及对半...仿真结果可清晰地看到TCP连接建立过程中半连接表变化,从而满足TCP SYN洪泛攻击防控等研究中对TCP连接建立过程模拟的需要。
tcp协议三次握手,socket连接的参数详细协商过程,主要是对监听过程的分析
(1)加深对TCP协议的理解。 (2)掌握TCP首部关键字段含义。 (3)掌握TCP连接建立和连接释放的过程。
1. Source Port/Destination Port:表示本机/目的端口号 2. Sequence Number:标识序号 3. Acknowledg
计算机网络实验5 - TCP数据包及连接建立过程分析
C# TCP 连接示例<br>包括一个控制台TCP Server<br>控制台Client和Winform Client<br>示例基本TCP连接建立,流传输文件目录,与下载图片
在TCP连接建立成功后,客户端需要首先发送标签信息,这样所有的客户端连接都会在TCP桥接工具上关联到一个标签上。关联好标签后,当一个TCP连接数据给TCP桥接工具时,TCP桥接工具会查找此连接关联的标签,并将数据...
在TCP连接建立成功后,客户端需要首先发送标签信息,这样所有的客户端连接都会在TCP桥接工具上关联到一个标签上。关联好标签后,当一个TCP连接数据给TCP桥接工具时,TCP桥接工具会查找此连接关联的标签,并将数据...
用MFC写的TCP客户端,与百度网站建立TCP连接,并接收网站信息。IDC_EDIT2显示本地IP地址以及绑定的端口,这个端口是在connect函数中绑定的,可以看见每次运行这个端口都不一样,尽管服务器那边固定端口号80. IDC_...
详解TCP协议建立连接全过程状态变迁图.doc 详解TCP协议建立连接全过程状态变迁图.doc