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

在这里插入图片描述

文章内容概览

在这里插入图片描述

TCP协议简介

  • TCP(Transmission Control Protocol:传输控制协议)
  • TCP协议是计算机网络中非常复杂的一个协议

TCP数据报所处的位置
在这里插入图片描述

TCP协议的特点

1.TCP是面向连接的协议

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

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

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

3.TCP提供可靠的传输服务

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

4.TCP协议提供全双工的通信

全双工指的就是一条通信线路,双方都可以同时发送和接收消息。也就是说,如果两台计算机建立了TCP连接,那么这两台计算机都可以同时向连接中发送数据或接收数据

5.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个字节。这个选项主要是为了支持协议未来的发展所使用的(支持未来的拓展)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

!一直往南方开.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值