【TCP】TCP连接建立过程的三次握手
2015-09-22 09:48
567 查看
创建通路[编辑]
TCP用三路握手(three-way handshake)过程创建一个连接。在连接创建过程中,很多参数要被初始化,例如序号被初始化以保证按序传输和连接的强壮性。TCP连接的正常创建
一对终端同时初始化一个它们之间的连接是可能的。但通常是由一端打开一个套接字(socket)然后监听来自另一方的连接,这就是通常所指的被动打开(passive
open)。服务器端被被动打开以后,用户端就能开始创建主动打开(active open)。
客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三路握手的一部分。客户端把这段连接的序号设定为随机数 A。
服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK 的确认码应为 A+1,SYN/ACK 包本身又有一个随机序号 B。
最后,客户端再发送一个ACK。当服务端受到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包序号被设定为收到的确认号 A+1,而响应则为 B+1。
e.g.
client发起连接,syn比特位置1; sequence number 为随机数50627, ack numbe为0.
server确认连接,syn比特位置1,ack比特位置1; ack number加1,为50628; sequence number为随机数169...
client确认连接,ack比特位置1; ack number加1;sequence number加1
相关文章推荐
- iOS 网络编程基础
- NSURLSession使用说明及后台工作流程分析
- HTTP协议:缓存
- okhttp使用
- 接口测试及httpclient深入
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- Linux网络IO模型
- 关于Linux的进程和线程 http://kenby.iteye.com/blog/1014039
- 网络编程问题解决方案:查看进程占用了哪个端口号
- 打造安全的App!iOS安全系列之 HTTPS 进阶
- 虚拟机桥接网络连接方式
- 2015北京网络赛 G Boxes BFS+打表
- CentOS6 编译安装LAMP(Apache-httpd2.4,Mariadb,php)_2015092001
- 2015北京网络赛 Boxes
- Windows下让Git记住用户名密码(https)
- .NET Framework 中的网络编程
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
- hdu5458 2015沈阳赛区网络赛 树链剖分+并查集
- http协议