计算机网络基础 (十五)--- 传输层 -TCP 协议详解

用户头像
书旅
关注
发布于: 2020 年 08 月 07 日
计算机网络基础(十五)---传输层-TCP协议详解

文章内容概览



TCP协议简介



  • TCP(Transmission Control Protocol:传输控制协议)

  • TCP协议是计算机网络中非常复杂的一个协议



TCP数据报所处的位置



TCP协议的特点

TCP是面向连接的协议

在上一篇UDP协议详解中有对面向连接进行了介绍,也就是在通信之前会先建立连接



TCP的一个连接有两端(点对点通信)

A和B要进行电话通信,那么A和B就是两个端点



TCP提供*可靠的传输*服务

后边会对TCP实现可靠的传输做详细的介绍



TCP协议提供*全双工*的通信

全双工在[网络概览](https://mp.weixin.qq.com/s/Ipn5lbyEFR0FQbKHXk_J2A)中有提到,指的就是一条通信线路,双方都可以同时发送和接收消息。也就是说,如果两台计算机建立了TCP连接,那么这两台计算机都可以同时向连接中发送数据或接收数据



TCP是面*向字节流*的协议

上篇文章在介绍UDP的时候知道,UDP是面向用户数据报的协议。那么数据报和字节流的区别是什么?



流指的是流入进程或流出进程的字节序列。传输层的数据都是由应用层传输下来的,是一块完整的数据。但是在TCP中,它不把应用层传输下来的数据看做是一块完整的数据,而是把它看做一整串的字节流。TCP不是面向一整块数据来进行处理的,而是面向一个一个的字节来进行处理的。所以,TCP就可能取出一块数据中的某一段来进行传输,而剩下的数据,再把它放到第二个TCP报文中进行传输。所以,在使用TCP协议进行数据传输时,可能对数据进行合并,也可能进行拆分,以实现更好的传输



TCP协议头部



16为的源端口和目的端口是和UDP中的一样的



序号:序号一共占用32个比特位,所以它可以表示的范围是0~2^32。因为TCP协议是面向字节流的,因此,每一个字节都有一个唯一的序号,这个序号就是用来标记传输的每一个字节的(一个字节一个序号)。这里的序号所代表的就是,这个TCP报文所传输的数据的第一个字节序号是什么



确认号:确认号所表示的范围也是0~2^32,也是一个字节一个确认号。确认号表示的就是期待收到数据的首字节序号是什么



假设有一个TCP数据报,它的序号是501,数据的长度是100个字节。某个计算机收到了这个数据,确认号就会说,501到600这个范围的数据,我都已经收到了,然后期望下一个传递给我的数据的确认号是601。所以确认号表示的就是,我期望下一个数据报里数据的首字节序号。确认号是配合序号一起来使用的。



如果某一个TCP数据报的数据确认号是N,则表示N-1序号的数据都已经收到



数据偏移

  • 占4个比特位(0~15),单位是32位字,也就是说,每一个偏移都可以表示4个字节的偏移

  • 它表示的就是真实的TCP数据,它偏离首部的距离(这个主要是由于TCP选项这个块的内容所导致的,因为我们并不知道这个选项的内容有多少,所以需要存储数据偏移)

  • TCP头部有固定长度的20个字节(至少),那TCP首部最长有多少个字节? 此时可以对数据偏移进行一个简单的计算,以得到TCP首部最长有多少



因为数据偏移最大表示的是15,每一个偏移都可以表示4个字节。所以最大偏移是15乘4等于60字节,所以TCP首部的长度范围就是20~60字节



保留字段:保留着的,还没有使用的



TCP标记:占6个比特位,每位都有不同的含义,他们分别是:

在后边了解TCP的三次握手和四次挥手,都会用到这里的标记位



窗口:占16个比特位,0~2^16-1。窗口的意思就是,指明允许对方发送的数据量。如果窗口大小为1000,则表明对方可以发送1000个字节



也可以结合窗口和确认号进行一个运算,假设确认号为501,窗口的值为1000,也就是说501~1500之间字节的数据是可以接收的



校验和:和UDP里边的校验和意思是一样的,可以看一下我上一篇介绍UDP的文章



紧急指针:这个只有当前边TCP标记位的URG=1时才启用,它表示紧急数据位于报文的位置。对于TCP报文来说,是有部分的紧急数据可以保存在数据报中的,等对方接收到的时候,就可以通过紧急指针来找到紧急数据所位于数据报的位置



TCP选项:它是可选的,从前边通过对数据偏移的计算可以知道,TCP选项最多有40个字节。这个选项主要是为了支持协议未来的发展所使用的(支持未来的拓展)





发布于: 2020 年 08 月 07 日 阅读数: 56
用户头像

书旅

关注

公众号:IT猿圈 2019.04.11 加入

还未添加个人简介

评论

发布
暂无评论
计算机网络基础(十五)---传输层-TCP协议详解