【跟着小编从零开始学以太网】之详解以太网传输层TCP协议

         小编又来了,前几篇博文,我们介绍了以太网的基础知识,从传输比特流的物理层,到数据链路层,再介绍到网络层,7层OSI模型已经介绍完了三层。今天呢,我们继续来介绍以太网传输层,如下介绍首先我们先看看传输层的作用:

---传输层的协议解决了端与端连接提供传输服务.

---这种传输服务分为可靠和不可靠的,其中TCP就是可靠传输、udp是不可靠传输.

---为端与端连接提供流量控制、差错控制、服务质量等管理服务.

           其中在传输层主要常见的涉及到了协议主要有两种,一种TCP,一种是UDP。我们就先从TCP协议先来介绍。

备注1:传输层协议繁多,如:tcp、udp、tls、rtp、sctp、spx、atp、IL等.

备注2:对于APP开发者来说,如运行Linux/Android的系统,常见也就是传输层的协议,也就是常说的 Socket 网络编程 .

        对于TCP协议,我们先看TCP是哪三个英文单词的缩写,Transmission Control Protocol (中文解释:传输控制协议.),它是一种面向连接,可靠的,基于字节流的传输层协议,TCP是基于IP的传输层协议.

       了解了TCP协议的基本概念,我们接着看看TCP协议段格式:

备注:顺便普及一下包、帧、数据包、段、消息这个五个术语,这些都是用来表述数据的单位,大致区分如下:

---包可以说是全能性术语;

---帧用于表示数据链路层中包的单位;

---数据包是 IP 和 UDP 等网络层以上的分层中包的单位;

---段则表示 TCP 数据流中的信息;

---消息是指应用协议中数据的单位。

对于段格式的详细介绍如下:

1:源端口号:

---源端口号表示报文的发送端口,占16位。源端口号和源ip地址组合起来,可以标识报文的发送地址。

---目的端口号表示报文的接收端口,占16位。目的端口号和目的IP地址相结合,可以标识报文的接收地址

---序列号,TCP传输过程中,在发送端出的字节流中,传输报文中的数据部分的每一个字节都有它的编号。序号占32位,发起方发送数据时,都需要标记序号。

---确认号标识了报文接收端期望接收的字节序列。如果设置了ACK控制位,确认序号的值表示下一个准备接收的包的序号码。

---首部长度,该字段占4位,用来表示tcp报文的首部长度。

---保留字段,暂时没什么用。

---控制标志占6位,具体的标志位为URG,ACK,PSH,RST,SYS,FIN.(有6个标志位,每个标志位1bit,即只有0和1两种状态.)

---窗口大小,长度为16位,共两个字节,用来进行流量控制的。

---校验和长度位16位,共两个字节,对整个tcp报文段,即tcp头部和tcp数据进行校验和计算,接收端用于对收到的数据包进行验证。

---紧急指针,长度16位,共两个字节,是一个偏移量,和sn序号值相加表示紧急数据最后一个字节的序号。

注意:以上10项内容是TCP报文首部必需字段,也叫固有字段,长度为20字节。接下来就是可选项和填充部分。

介绍完TCP协议段格式,接下来我们继续看看TCP协议的传输过程:TCP的数据传输过程涉及三个阶段:建立连接(三次握手),数据传输,断开连接(四次挥手).

1:建立连接(三次握手):

       TCP连接的建立是通过三次握手过程完成的,目的是确认双方的接收和发送能力是否正常,同时交换必要的参数,如序列号和窗口大小,为数据传输做准备。

---第一次握手:客户端发送一个SYN(同步)报文给服务器,并指定一个初始序列号。客户端进入SYN-SENT状态,等待服务器的响应。

---第二次握手:服务器收到SYN报文后,如果同意建立连接,则发送一个SYN-ACK(同步确认)报文作为响应。服务器同时也发送自己的初始序列号,并进入SYN-RECEIVED状态。

---第三次握手:客户端收到SYN-ACK报文后,发送一个ACK(确认)报文给服务器,确认收到服务器的SYN报文。此时,TCP连接建立,双方进入ESTABLISHED状态,可以开始数据传输。

2:数据传输:

       在连接建立后,TCP进入数据传输阶段。数据在应用层被分割成数据段,然后在传输层被进一步分割成TCP报文段。每个TCP报文段包含序列号、确认号和其他控制信息。发送方将数据发送给接收方,并等待接收方的确认。如果发送方在一定时间内未收到确认,它将重传数据。

3:断开连接(四次挥手):

        数据传输完成后,TCP连接需要被断开。断开连接的过程称为四次挥手,包括以下步骤:

---第一次挥手:一方(通常是客户端)发送一个FIN(结束)报文,请求断开连接。

---第二次挥手:另一方(通常是服务器)收到FIN报文后,发送一个ACK报文确认,并进入CLOSE-WAIT状态。

---第三次挥手:服务器发送一个FIN报文给客户端,请求断开连接。

---第四次挥手:客户端收到FIN报文后,发送一个ACK报文确认,然后进入TIME-WAIT状态。经过一段时间后,客户端进入CLOSED状态,连接完全断开。

 通过以上对传输层TCP协议的简单介绍,小编相信攻城狮对TCP协议有了简单认识,后续小编也会基于对TCP协议传输的应用协议会一一介绍。

 对了,介绍了TCP,下一篇猜一下小编会介绍什么,猜对了,下一篇进行UDP协议介绍。

 最后,小编还是那句话:加油,预祝中国科技早日实现自主可控.

 ┏(^0^)┛.

本篇作者-品佳集团-思考帝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值