说说 TCP 协议以及三次握手流程

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

1 表头内容

TCP 包主要包含以下表头内容:

内容 说明
Source Port 來源埠口
Destination Port 目標埠口。主机会利用来源埠口与目標埠口所建立的 『 通道 』 来传送 TCP 包。
Sequence Number 包序号,用于记录每个包的序号。如果 TCP 数据太大时 ( 比如大于 IP 包所容许的程度 ) ,就必须进行分段。这样可以让接收端把收到的包,依据序号,重新组装起来。
Acknowledge Number 回应序号。用于确认目标端确实有收到来源端所送出的 TCP 包。
Control Flag 控制标志码。这个码有6个 bits ,分别代表6个控制码。
控制标志码 说明
URG(Urgent) 为1则代表该包为紧急包,接收端需要紧急处理。
ACK(Acknowledge) 为1代表这个包为回应包,即与 Acknowledge Number 相关。
PSH(Push function) 为1代表要求对方立即传送缓冲区内的包,默认是等待缓冲区满了之后才会传送。
RST(Reset) 为1表示连线会被马上结束,而默认是会等待终止确认步骤。
SYN(Synchronous) 为1表示发送端希望双方建立连线。通常带有 SYN 标志的包表示 『 主动 』 要求连接到对端。
FIN(Finish) 为1表示传送结束,即通知对方数据传送结束,并等待对方回应。

2 埠口

除了上述内容,TCP 表头还包含埠口。 它有 16 位,因此目标与来源埠口最大可为 65535 号 (2 的 16 次方 ) !

不同的服务所对应的埠口号也不同,具体写在 /etc/services 中:

更详细的内容,在 https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml 中。

常见的埠口有这些:

埠口 说明
20 FTP-data ,文件传输协议所使用的数据传输通道。
21 FTP ,文件传输协议的命令通道。
22 SSH ,较为安全的服务通道。
23 Telnet ,远程登陆服务。
25 SMTP ,简单邮件传输协议,作为邮件服务器的通道。
53 DNS ,作为域名解析服务器的通道。
80 最基本的 WWW 服务通道,为默认埠口。
110 POP3 ,邮件收信协议。
443 https ,带安全加密机制的 WWW 服务通道。

这些埠口号通常小于 1024 ,用于供给知名的网络服务软件使用。

因为指定好埠口,才能真正确定网络地址,所以 IP 与埠口常常连在一起说明,即『 IP :port』,因此又称之为 Socket Pair。

3 三次握手

TCP 包在建立连线之前,都必须要通过三个确认动作,所以这种连线方式也就被称为三次握手 (Three-wayhandshake)。 整个流程可以以 A , B , C , D 四个阶段来说明:

阶段 A:
当客户端想要与目的端建立连接时,首先要发送一个要求连线的包,此时客户端会随机取用一个大于 1024 以上的埠口来做为来源埠口。然后在 TCP 的表头中,带有 SYN 的主动连线标识( SYN =1),并且记下发送包序号 (Sequence number=10001)。

阶段 B:
当目的端收到这个包时,会开始制作一个带有 SYN=1 , ACK=1 的包,并带有 acknowledge ,它给客户端确认之用(所以该数字比收到的 seq 多 1)。因为目的端也需要确认客户端可以接收目的端所发送的包,所以也会发送出一个 Sequence (seq=20001 ) 给客户端,并等待客户端响应。

阶段 C:

当客户端收到来自服务器端的带 ACK=10002 的包之后,就能够确认之前所发送的请求包已经被正确接收咯。接下来,如果客户端也同意与目的端的连线请求,那么就会再次发送一个确认包( ACK =1,acknowledge=20001+1=20002)给目的端。

阶段 D:
在目的端收到带有 ACK=1 且 ack=20002 序号的包之后,就能够正式建立连接通道咯。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,679评论 6 526
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,610评论 3 411
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 174,336评论 0 372
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,146评论 1 306
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,001评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,522评论 1 318
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,633评论 3 433
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,777评论 0 283
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,291评论 1 329
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,272评论 3 352
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,410评论 1 363
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,977评论 5 354
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,671评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,086评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,299评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,991评论 3 385
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,397评论 2 369

推荐阅读更多精彩内容

  • 在人生陷入一片迷茫 在生活陷入一地鸡毛 在工作陷入停滞不前 在爱情都见鬼去了的这个时候 我决定 我要开始写作了 时...
    蘅芜再芜在阅读 97评论 0 0
  • 是五年前的时候。 辛珏在开学的前一天就先去了分配好的宿舍,走廊里很安静,这一层都是大一新生,辛珏以为除了她没...
    05ed813be06b阅读 166评论 0 2
  • 最近学校里又一个同事辞职了,同事们都忙着恭喜她仿佛她终于从人间炼狱中脱身。当大家羡慕着她终于可以上岸不再需要朝九晚...
    cyrensw阅读 453评论 0 0
  • 刚跨完年,2018年的第一场雪就不期而至,大半个中国今天都在下雪,一整天朋友圈里被“下雪啦!”刷了屏。恍惚间,耳畔...
    往前走的蟹子阅读 3,040评论 0 0