【HCIA】03.常用协议(TCP UDP)(一)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
全局流量管理 GTM,标准版 1个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 【HCIA】03.常用协议(TCP UDP)

传输层协议

TCP:一种面向连接的,可靠的传输层通信协议,由IETF的RFC/93定义。

UDP:一种简单的无连接的传输层协议,由IETF的RFC 768定义。

TCP报文

  • TCP头部默认20Byte(160个bit)
  • 接口一次只能发送1500个字节,MTU=1500
  • TCP头部最长是60个Byte

报文内容简介

  • Source port(16):源端口
  • Destination port(16):目的端口
  • Sequence number(32):序列号,发出来的数据的编号
  • Acknowledgement number(32):确认号,收到了第几个报文(表示下一个报文应该从哪个序列号开始发送。)
  • Header length(4):头部长度,解封装时可以根据头部长度来确定TCP头部的范围是从哪里到的哪里
  • Reserved(6):保留字段,没有开发,没有什么用
  • Options:补充功能,可以添加其他的功能(认证,密码),0-40个Byte
  • Window(16):滑动窗口,用来做流量控制,管理当前传输量
  • Checksum(16):校验和,看看数据和之前的是否一样
  • Urgent(16):紧急指针位,接到这个时,需要尽快送到上层
  • Control bits(6):通常叫做flag位,标志位。可以容纳6个bit,里面的值代表开关,1则代表开启;
  • ACK:确认序号有效标识,只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。确认连接
  • RST:重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因)然后再重新建立连接。重新连接
  • SYN:同步序号标识,用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。建立连接
  • FIN:发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的数据已经发送完毕。拆除连接
  • PSH:标识应该尽快将这个报文段交给应用层。
  • URG:紧急指针有效表示。它告诉系统此报文段中有紧急数据,应尽快传送

TCP的建立-三次握手

  • 任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。

  • TCP连接建立的详细过程如下:
  • 由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0 ;
  • 接收方(图中PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1;
  • PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立。


TCP的序列号与确认序列号

  • TCP使用序列号和确认序列号字段实现数据的可靠和有序传输。

  • 序列号 对面的确认号是多少,自己的序列号就是多少(如果通过计算来得到自己的序列号,那么就跟上次自己的序列号加上报文长度;注意:如果在三次握手以及四次挥手中,出现syn或者fin也要+1)
  • 确认号 根据对面的包做确定(对面的序列号+【如果有syn或者fin则+1】 +报文长度)

假设PC1要给PC2发送一段数据,传输过程如下:

  1. PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。
  2. PC1会把每一段数据的第一个字节的编号作为序列号(Sequence  number),然后将TCP报文发送出去。
  3. PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12)
  4. PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送。
    为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认。

TCP的窗口滑动机制

  • TCP通过滑动窗口机制来控制数据的传输速率
  • MSS就是一个窗口可以存储多少字节,默认是1460字节
  • 如果第二个窗口传输错误,那么从第二窗口往后都需要重新传输
  • 看对面剩几个空格,就发送几个空格

  1. 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。
  2. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。
  3. 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
  4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。
  5. 发送方根据接收方当前的Window大小发送相应数量的数据。


TCP的关闭-“四次挥手”

  • 当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。

TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。如图所示:

  1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;
  2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
  3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
  4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

UDP报文

  • 无连接的服务
  • 一般视频语音聊天需要使用UDP
  • UDP报文头部:
  • Source Port:源端口,标识哪个应用程序发送。长度为16比特。
  • Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。
  • Length:该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。
  • Checksum:覆盖UDP头部和UDP数据的校验和,长度为16比特。

地址解析协议(ARP)

  • 已知IP求MAC的过程
  • ARP基于数据链路层工作
  • Address Resolution Protocol 地址解析协议
  • 华为查看mac表: arp -a

ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取数据链路层地址的一个TCP/IP协议。

ARP是IPv4中必不可少的一种协议,它的主要功能是:

将IP地址解析为MAC地址;

维护IP地址与MAC地址的映射关系的缓存,即ARP表项;

实现网段内重复IP地址的检测。(免费ARP)


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
27天前
|
网络协议 算法 网络性能优化
|
16天前
|
网络协议 SEO
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
26 4
|
21天前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
|
1月前
|
网络协议 前端开发 物联网
TCP和UDP区别?
本文首发于微信公众号“前端徐徐”,详细介绍了TCP和UDP两种传输层协议的核心概念、连接性和握手过程、数据传输和可靠性、延迟和效率、应用场景及头部开销。TCP面向连接、可靠、有序,适用于网页浏览、文件传输等;UDP无连接、低延迟、高效,适用于实时音视频传输、在线游戏等。
49 1
TCP和UDP区别?
|
29天前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
53 10
|
1月前
|
网络协议 网络性能优化 C#
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
37 1
|
2月前
|
存储 网络协议 算法
UDP 协议和 TCP 协议
本文介绍了UDP和TCP协议的基本结构与特性。UDP协议具有简单的报文结构,包括报头和载荷,报头由源端口、目的端口、报文长度和校验和组成。UDP使用CRC校验和来检测传输错误。相比之下,TCP协议提供更可靠的传输服务,其结构复杂,包含序列号、确认序号和标志位等字段。TCP通过确认应答和超时重传来保证数据传输的可靠性,并采用三次握手建立连接,四次挥手断开连接,确保通信的稳定性和完整性。
93 1
UDP 协议和 TCP 协议
|
3月前
|
消息中间件 网络协议 算法
UDP 和 TCP 哪个更好?
【8月更文挑战第23天】
214 0
|
1月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
38 0
Linux C/C++之TCP / UDP通信
|
1月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
65 1