说说 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 序号的包之后,就能够正式建立连接通道咯。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容