TCP/IP协议:TCP协议

2018-03-08  本文已影响0人  dc630f46ee2d

传输控制协议(Transmission Control Protocol, TCP) 最终目的是为数据提供的端到端传输。

端是终端,点是结点,网络层是实现结点(路由器)的通信。终端可以是PC,笔记本,手机。结点一般表示路由器

WechatIMG37.jpeg

20字节
源端口(16位 Source Port): 用来传输数据包的端口
目的端口(16位 Destination Port ) : 数据包将要发送到的端口
序号(32位 Sequence Number): 这个数字用来表示一个TCP片段,这个域用来保证数据流中的部分没有缺失。
确认号(32位 Acknowledgment Number):这个数字是通信中希望从另外一个设备得到的下一个数据包的序号
标记(Flags): URG ACK PSH RST SYN FIN 表示所传输的TCP数据包的类型
窗口大小(Windows Size): TCP 接收者缓冲的字节大小
校验和(Checksum):用来保证TCP头和数据的内容在抵达目的地时的完整性
紧急指针(Urgent Pointer):如果设置了URG位,这个域将被检查作为额外的指令,告诉CPU从数据包的哪里开始读取数据。
选项(Options):各种可选的域,可以在TCP数据包中进行指定。

TCP端口

  1. 所有TCP通信都会使用源端口和目的端口。
  2. 为了能够将数据传输到远程服务器或设备的特定应用中去,TCP数据包必须知道远程服务所监听的端口。

在使用TCP进行通信的时候,我们有65535个端口可供使用,并通常将这些端口分成两个部分。

所有基于TCP的通信都以相同的方式工作: 选择一个随机的源端口与一个已知的目的端口进行通信。在发出初始数据包之后,远程设备就会与源设备使用建立起的端口进行通信。

TCP三次握手

TCP三次握手分为3个步骤。
第一步,主动发起通信的设备向目标发送一个TCP数据包。初始数据包除了底层协议头外不包括任何数据。这个数据包会设置SYN标志(设为1),并用到初始序列号
第二步,目标回复一个设置了SYNACK标志(同时设置)和包含它的初始序列号的数据包。
第三步,主机A向主机B发送仅仅设置了ACK标志的数据包。这个过程之后,双方设备有了开始正常通信所需的信息。
第一步中 SYN为1 序列号为X ACK号为0 发送的包叫SYN包
第二步中 SYN为1 ACK为1 序列号为Y,ACK号为X+1 发送的包叫SYN/ACK包
第三步中 ACK为1 序列号为X+1 ACK号为Y+1 发送的包叫ACK包(此时SYN也有值,比上一次SYN号+1)

个人理解

SYN 标志 是一个标志位 占一个位
ACK标志 和 SYN标志可以共存。因为它们占用的是不同的位
序列号 是一个32位的数字 确认号 是一个32位的数字
确认号和序列号也可以共存。

上一篇下一篇

猜你喜欢

热点阅读