文章目录
- 一、对TCP协议的感性认识
- 简介
- 特点
- 二、TCP的报文结构
- 概览
- 16位端口号和16位目的端口号
- 32位序号和32位确认序号
- 4位首部长度
- 保留位(6位)
- 6个标志位
- 16位窗口大小
- 16位校验和
- 16位紧急指针
- 40位头部选项(option)
- 参考
一、对TCP协议的感性认识
简介
TCP,是Transmission Control Protocol的简称,中文名是传输控制协议,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设置的一个传输协议。
互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。而不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
相关术语:
(注意这里的延迟的概念)
网络拓扑结构就是指用传输媒体把计算机等各种设备互相连接起来的物理布局,是指互连过程中构成的几何形状,它能表示出网络服务器、工作站的网络配置和互相之间的连接。网络拓扑结构可按形状分类,分别有:星型、环型、总线型、树型、总线/星型和网状型拓扑结构。
带宽:在数字设备中,带宽指单位时间能通过链路的数据量。通常以bps(bits per seconds)来表示,即每秒可传输之位数。
延迟:延迟是指数据从网络的一端传送到另一端所需的时间。 有时也被称为迟延或者时延。
每台支持TCP的机器都有一个TCP传输实体。TCP实体可以是一个库过程、一个用户进程,或者内核的一部分。在所有这些情形下,它管理TCP流,以及与IP层之间的接口。TCP传输实体重构出原始的字节流。
关于TCP传输实体
TCP传输实体接受本地进程的用户数据流,将它们分割成不超过64KB(实际上去掉IP和TCP头,通常不超过1460数据字节)的分段,每个分段以单独的IP数据报形式发送。当包含TCP数据的数据报到达一台机器时,它们被递交给TCP传输实体,TCP传输实体重构出原始的字节流。
为简化起见,我们有时候仅仅用“TCP”来代表TCP传输实体(一段软件)或者TCP协议(一组规则)。根据上下文语义你应该能很消楚地推断出其实际含义。例如,在“用户将数据交给TCP”这句话中,很显然这里指的是TCP传输实体。
特点
有连接、可靠传输、面向字节流、全双工
二、TCP的报文结构
概览
与UDP类似,TCP也是报头(head)+载荷(payload)。
16位端口号和16位目的端口号
即各两个字节,表示范围为0~65535.
表示了数据从哪个进程来到哪个进程去。
32位序号和32位确认序号
这里与后边我们要重点讨论的TCP内部工作机制——确认应答有关,必须连在一起理解,所以这里先放放。
4位首部长度
即表示TCP报头有多少个32个bit,注意,这里的单位是4字节。
2^4=16==>表示的范围是0~15==>15*4=60,所以TCP报头最多有60个字节。
这里边的影响的主要就是选项这个字段。
保留位(6位)
是为了之后的扩展准备的。
对于网络协议,扩展升级成本很高。
有了这里的保留位,之后扩展可能会容易一点。
即使升级,也可以兼容以前的版本。
这里体现了开发的可扩展性。
6个标志位
- URG:紧急指针是否有用
- ACK:确认序号是否有用(是不是应答报文)
- PSH:提示接收端应用程序立即从TCP缓冲区把数据读走
- RST:对方要求重新建立连接【带这种标识的叫做复位报文段】
- SYN:请求建立连接【带这种标识的叫做同步报文段】
- FIN:通知对方,本段要关闭了【携带这种标识的叫做结束报文段】
16位窗口大小
这里与后边我们要重点讨论的TCP内部工作机制——滑动窗口、流量控制有关,必须连在一起理解,所以这里先放放。
16位校验和
发送端填充,CRC校验。接收端校验不通过,则认为数据有问题。此处的检验和不光包含TCP首部,也包含TCP数据部分。
这里其实跟UDP那里相似。
16位紧急指针
标识哪部分数据是紧急数据 。
40位头部选项(option)
可以先看这里
参考
1
选项