HC110110006 传输层协议

传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据包协议UDP(User Datagram Protocol)。

TCP

下图中,两台主机在通信前,需要tcp在它们之间建立可靠的传输通道。
在这里插入图片描述

  • TCP位于TCP/IP模型的传输层,它是一种面向连接的端到端的协议。TCP作为传输控制协议,可以为主机提供可靠的数据传输。

TCP端口号

在这里插入图片描述

  • TCP允许一个主机同时运行多个应用进程。每台主机可以拥有多个应用端口,没对端口号、源和目标IP地址组合唯一地标识了一个会话。端口号分为知名端口动态端口
  • 知名端口:网络服务使用的固定端口,端口号范围为0-1023.如FTP、Telnet服务均使用知名端口号。
  • 动态端口:动态端口号范围从1024-65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。

TCP头部

在这里插入图片描述

  • TCP通常使用IP作为网络层协议,这时TCP数据段被封装在IP数据包内。
  • TCP数据段由TCP Header(头部)和TCP Data(数据)组成。TCP最多可以有60个字节的头部,如果没有Options字段,正常的长度是20字节。
  • TCP Header是由如上图标识的一些字段组成,这里列出几个常用字段。
  • 16位源端口号:源主机的应用程序使用的端口号。
  • 16位目的端口号:目的主机的应用程序使用的端口号。每个TCP头部都包含源和目的端的端口号,这两个值加上IP头部中的源IP地址和目的IP地址可以唯一确定一个TCP连接。
  • 32位序列号:用于标识从发送端发出的不同的TCP数据段的序号。数据段在网络中传输时,它们的顺序可能会发生变化;接收端依据此序列号,便可按照正确的顺序重组数据。
  • 32位确认序列号:用于标识接收端确认收到的数据段。确认序列号为成功收到的数据序列号加1。
  • 4位头部长度:表示头部占32bit字的数目,它能表达的TCP头部最大长度为60字节。
  • 16位窗口大小:表示接收端期望通过单次确认而收到的数据的大小。由于该字段为16位,所以窗口大小的最大值为65535字节,该机制通常用来进行流量控制。
  • 16位校验和:校验整个TCP报文段,包括TCP头部和TCP数据。该值由发送端计算和记录并由接收端进行验证。

UDP

在这里插入图片描述

  • 当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时,可以用UDP来替代TCP协议在传输层控制数据的转发。UDP将数据从源端发送到目的端时,无需事先建立连接。UDP采用了简单、易操作的机制在应用程序间传输数据,没有使用TCP中的确认技术或滑动窗口机制,因此UDP不能保证数据传输的可靠性,也无法避免接收到重复数据的情况。

UDP头部

在这里插入图片描述

  • UDP报文分为UDP报文头和UDP数据区域两部分。报头由源端口、目的端口、报文长度以及校验和组成。UDP适合于实时数据传输,如语音和视频通信。相比于TCP,UDP的传输效率更高、开销更小,但是无法保障数据- 传输的可靠性。UDP头部的标识如下:
  • 16位源端口号:源主机的应用程序使用的端口号。
  • 16位目的端口号:目的主机的应用程序使用的端口号。
  • 16位UDP长度:是指UDP头部和UDP数据的字节长度。因为UDP头部长度为8字节,所以该字段的最小值为8。
  • 16位UDP校验和:该字段提供了与TCP校验字段同样的功能;该字段是可选的。

UDP传输过程

在这里插入图片描述

  • 主机A发送数据包时,这些数据包是以有序的方式发送到网络中的,每个数据包独立地在网络中被发送,所以不同的数据包可能会通过不同的网络路径到达主机B。这样的情况下,先发送的数据包不一定先到达主机B。因为UDP数据包没有序号,主机B将无法通过UDP协议将数据包按照原来的顺序重新组合,所以此时需要应用程序提供报文的到达确认、排序和流量控制等功能。

  • UDP适合传输对时延敏感的流量,如语音和视频。

  • 在使用TCP协议传输数据时,如果一个数据段丢失或者接收端对某个数据段没有确认,发送端会重新发送该数据段。

  • TCP重新发送数据会带来传输延迟和重复数据,降低了用户的体验。对于时延敏感的应用,少量的数据丢失一般可以被忽略,这时使用UDP传输将能够提升用户的体验。

  1. TCP头部中的确认标识位有什么作用?
    答:TCP报文头中的ACK标志位用于目的端对已收到数据的确认。目的端成功收到序列号为x的字节及之前的所有字节后,会以序列号x+1进行确认。

  2. TCP头部中有哪些标识位参与TCP三次握手?
    答:在TCP的三次握手过程中,要使用SYN和ACK标志位来请求建立连接和确认建立连接。


个人水平有限,无法描述出详细过程///(ㄒoㄒ)/~~。等以后学到ie之后在回来重新修改吧。
下面的才是大佬:
https://github.com/jawil/blog/issues/14

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值