【网络】传输层协议介绍


一、TCP/UDP协议

1.TCP协议

  TCP (Transmission Control Protocol )传输控制协议:面向连接网络协议,是指通信双方之间在进行通信之前要先建立连接。比如打电话,双方通话前需要先建立连接。

  TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

2.UDP协议

  UDP (User Datagram Protocol )用户数据报协议:无连接网络协议,是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,由系统自主选定路线进行传输。比如QQ发送信息。

  UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速度更快,效率更高。

二、报文格式

1.TCP报文头部

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9RsqiUwH-1678781396458)(F:\博客存放\TCP报文格式.jpg)]

源端口号:发送方进程的端口号。

目标端口号:接收端进程的端口号。接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程。

序号:发送端为每个字节进行编号,便于接收端正确重组。

当TCP从进程按收数据字节时,把它们分片成数据段存储在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性。

确认号:对发送端的确认信息。

   接收端响应消息时将会用它来告诉发送端这个序号之前的数据段都已经收到,如确认号是X,就是表示前X-1个数据段都已经收到。

首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。

控制位

   URG:紧急位。紧急指针有效位。

​   ACK:确认位。只有当ACK=1时,确认序列号字段才有效;当ACK=0时,确认号字段无效。

​   PSH:急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。

​   RST:重置位。当 RST值为1 时,通知重新建立TCP连接。

​   SYN:同步(连接)位。TCP需要建立连接时将这个值设为1。

​   FIN:断开位。当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1。

窗口大小:说明本地可接收数据段的数目。这个值的大小是可变的,当网络通畅时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时诚 这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的。

   比如下载速度从一开始的几KB 逐渐提升到几MB 的过程。

校验和:用来做差错控制。字段检验的范围包括首部和数据这两部分。数据段在发送时和到达目的地时会进行校验和计算,若这两次的校验和一致,从说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据。

紧急指针:和URG配合使用,当URG=1时有效。

选项:在 TCP首部可以有多达40字节的可选信息。例如,最大报文段长度MSS(Maximum Segment Size)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据宁段的最大长度是 MSS个字节。"

2.UDP报文头部

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ALWqwRbl-1678781396460)(F:\博客存放\UDP报文头部.jpg)]

源端口:这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0。这样,接收端的应用程序就不能发送响应了。

目的端口:接收端计算机上 UDP 软件使用的端口,占据 16 位。

长度:该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8。

校验值:该字段占据 16 位,可以检验数据在传输过程中是否被损坏。

三、TCP连接

1.TCP三次握手

  TCP协议位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。

三次握手原理:

  第1次握手:PC端向服务器端发送SYN报文(请求建立连接),客户端进入SYN_SEND状态;

  第2次握手:服务器端接收到请求后,向PC端发送SYN报文(请求建立连接)和ACK报文(同意接收连接),服务器端进入SYN_RCV状态;

  第3次握手:PC端收到请求后,向服务器端发送ACK报文(同意建立连接),客户端进入ESTABLISHED状态(已连接状态),客户端接收到确认后,也进入到ESTABLISHED状态。

可通过下图理解三次握手:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R3VSlshs-1678781396461)(F:\博客存放\tcp三次握手.jpg)]

为什么要三次握手?
  如果没有第三次再次确认的话,已经失效的链接有可能会重新在此建立连接,这样造成服务器的资源浪费和链接混乱,很容易消耗完服务的连接端口资源。

2.TCP四次挥手

  由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

四次挥手原理:

  第1次挥手:PC端向服务器端发送FIN报文(请求断开连接),客户端进入FIN_WAIT_1状态;

  第2次挥手:向PC端发送ACK报文(同意断开连接),服务器端进入CLOSE_WAIT状态,客户端接收到这个确认包之后,进入FIN_WAIT_2状态;

  第3次挥手:服务器端接收到请求后,向PC端发送FIN报文(请求断开连接)和ACK报文(固定格式),服务器端进入LAST_ACK状态,等待来自客户端的最后一个ACK;

  第4次挥手:PC端收到请求后,向服务器端发送ACK报文(同意断开连接),60s后客户端进入CLOSED状态(已断开状态),服务器端接收到这个确认包之后,关闭连接,进入CLOSED状态。

可通过下图解理解四次挥手:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwvYm4tR-1678781396461)(F:\博客存放\四次挥手.jpg)]
为什么握手只有三次,而挥手却要四次?
  这是因为 TCP 不允许连接处于半打开状态时就单向传输数据,所以在三次握手建立连接时,服务器会把 ACK 和SYN 放在一起发给客户端。其中,ACK 用来打开客户端的发送通道,SYN 用来打开服务器的发送通道。这样,原本的四次握手就降为三次握手了。但是当连接处于半关闭状态时,TCP 是允许单向传输数据的。当主动方关闭连接时,被动方仍然可以在不调用 close 函数的状态下,长时间发送数据,此时连接处于半关闭状态。这一特性是 TCP 的双向通道互相独立所致,却也使得关闭连接必须通过四次挥手才能做到。

3.名词解释

SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。

SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。

ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。

FIN_WAIT_1:等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。

FIN_WAIT_2:等待远端TCP 的连接终止请求。

CLOSE_WAIT:等待本地用户的连接终止请求。

CLOSING:等待远端TCP 的连接终止请求确认。

LAST_ACK:等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)

TIME_WAIT:等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。
TIME_WAIT 两个存在的理由:
          1.可靠的实现tcp全双工连接的终止;
          2.允许老的重复分节在网络中消逝。

CLOSED:不在连接状态(这是为方便描述假想的状态,实际不存在)

四、常用协议及端口

TCP常用协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KiaslWFT-1678781396462)(F:\博客存放\tcp常用协议.jpg)]

  FTP:文件传输协议,是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。

  TELNET:Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。

  HTTP:超文本传输协议,是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

  HTTPS:是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。

  SMTP:即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。SMTP是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。

  POP3:即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。

UDP常用协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QXWcIazB-1678781396462)(F:\博客存放\UDP.jpg)]

  TFTP:是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。

  RPC:是远程过程调用。SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。

  NTP:是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。

  SNMP:简单网络管理协议(Simple Network Management Protocol–SNMP)的原来名字叫做简单网关监控协议(Simple Gateway Monitoring Protocol-SGMP)。最早是IETF的研究小组提出来的,在SGMP协议的基础之上,加上新的管理信息结构和管理信息库,让SGMP更加全面。简单性和扩展性是SNMP所体现出来的,其中包含数据库类型(Database Schema),一个应用层协议(Application Layer Protocol)和一些资料文件。SNMP管理协议不光能够加强网络管理系统的效能,而且还可以用来对网络中的资源进行管理和实时监控。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我的宝贝大唐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值