TCP Handshake

来源:互联网 发布:淘宝分销 批量上架 编辑:程序博客网 时间:2024/06/05 20:57

温故而知新,TCP协议学习已经是很久以前了,今天再温习一下。

TCP 是面向连接的,面向连接的意思是TCP要经过3次握手来建立连接,  TCP是全双工的, 两端可以独立收发packets, ,4次握手断开连接。

首先我们从TCP建立连接握手开始:

客户端与服务器建立握手的过程

1)客户端Host A发送TCP sync packet给HOST B,同时指定一个随机的sequence number X;

2) 服务器Host B接收到A的Sync packet;

3)服务器发送SYNC-ACK packet给客户端,同时把A的串号X+1赋值给ACK  number,同时指定一个随机的sequence number Y;

4)客户端接收到SYNC-ACK;

5)客户端发送SYNC packet给服务器,同时把B的串号Y+1赋值给ACK  number;

6)服务器端接收到SYNC;

到此TCP socket 连接建立起来了。

Diagram:



Synchronize 和 Acknowledge消息是通过TCP header里面的 SYNC和ACK bit来表示的。SYNC-ACK消息就是把SYNC和ACK 位全部设为1。

我们可以通过SYNC, SYNC-ACK, ACK消息来知道当前状态,正在打开连接,同步中还是已经建立连接。


当双方的通信终止的时候, 同样需要4次握手来关闭连接,关闭连接可以由双方中任何一方终止连接。

关闭连接的过程如下:

1)A是主动断开连接方, 把FIN位设为1,seq num u是通信过程中的A发送的字节数+1,此报文的tcp len为0,为TCP协议规定

2) 此时A连接状态为Fin-wait-1;

3)B收到Fin报文;

4)  B发送ACK报文确认FIN,ACK num是A的seq num u +1, 同时发送自己的seq num v,v是B发送所有字节数+1;

5)此时B处于Close Wait状态, 这个状态服务器B正在等待服务应用关掉连接;

6)Client A收到ACK报文;

7)Client状态改为FIN Wait 2,这个状态的时候, 从客户端A到服务端B的连接以及关闭, 客户端等待服务器关闭TCP连接。

8)服务器应用程序关闭了TCP 连接。

9)服务器端发送FIN-ACK报文。

10)服务器端状态改变为Last ACK,等待client 发送ACK。

11)客户端A收到FIN;

12)客户端A发送ACK到服务器端;

13)客户端A开启一个定时器,用来处理last ACK被丢失, 服务器重新发送FIN;

14)客户端等待服务器重新发送FIN 在time wait状态;

15)服务器接收到ACK;

16)服务器把连接置为close状态;

17)客户端time wait 定时器超时,客户端连接变为close状态;

Diagram:



Time Wait定时器有两个作用:

1) 确保B能够收到最后一个ACK。如果ACK报文丢失,B会超时重传FIN+ACK,A在Time Wait状态可以重新发送ACK,并且重置定时器。如果B一直收不到last ACK,B会一直处于Close Wait状态。通过定时器可以确保TCP的全双工连接终止。

2)让老的失效的packet在网络中失效,TCP不允许处于TIME_WAIT状态的连接启动一个新的化身,因为TIME_WAIT状态持续2MSL,就可以保证当成功建立一个TCP连接的时 候,来自连接先前化身的重复分组已经在网络中消逝。

在建立连接的时候, 同时也协商MSS,MSS由TCP header中表示, 采用TCP双方中最小的MSS, MSS的计算方法为MTU - IP header - TCP header



引用:

本文参考附件的PDF及以下链接:

http://packetlife.net/blog/2010/aug/4/tcp-windows-and-window-scaling/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鼻子堵住了怎么办没法吸气时 一只鼻子不通气怎么办 练瑜伽后特别饿怎么办 站一天小腿肿了怎么办 练腹肌腰粗了怎么办 大专不交学费.然后退学怎么办 练瑜伽压腿一字马受伤了怎么办 银行工作人员借钱不还怎么办 借钱不还跑了但有工作怎么办 亲戚家借钱不还怎么办 学习瑜伽教练口令好复杂怎么办 练瑜伽腿的柔韧性不够怎么办 瑜伽扭转时手抓不到脚怎么办 练瑜伽腿部太硬怎么办 褶皱衣服不紧了怎么办 吃撑了肚子涨怎么办 正好压本科线该怎么办 大脚趾被砸了怎么办 脊柱侧弯每天疼怎么办 内衣扣的位置脊柱疼怎么办 练完瑜伽颈椎疼怎么办 乳胶枕头太高了怎么办 枕头太高脖子痛怎么办 颈椎突出症状缓解后怎么办 外痔疼的的历害怎么办 小肚子疼得历害怎么办 练瑜伽伤到颈椎怎么办 鼻子干口干胃烧怎么办 颈椎病压迫神经引起手麻怎么办 4个月婴儿睡觉少怎么办 晚上睡觉睡不好老是醒来怎么办 吃了没熟的香蕉怎么办 70岁父母老吵架怎么办 怀孕七个月晚上睡不着怎么办 九个月宝宝睡眠不好怎么办 一个月的宝宝放不下怎么办 宝宝被吓了发烧怎么办 体内火气重睡不着觉怎么办 宝宝睡觉一直翻身发出声音怎么办 严重失眠怎么办整夜睡不着觉 腿疼得睡不着觉怎么办