TCP/UDP协议详解

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: TCP/UDP协议详解

TCP协议

TCP协议的报文格式(也是封装在IP数据报里的)
在这里插入图片描述
TCP首部介绍:

TCP字段 功能
源端口号 表示发送端端口号,字段长度16位
目标端口号 表示接收端端口号,字段长度16位
序号 序列号是指发送数据的位置。每发送一次数据,就累加一次该数据字节数的大小。字段长度32位
确认号 是指期望下一次应该收到的数据的序列号。发送端接收到这个确认应答号以后就可以认为在这个序号以前的数据都已经被正常接收了。字长32位
首部长度 指出TCP报文首部含选项时的长度,没有选项时为5,字长4位
保留 该字段主要为以后扩展使用。一般设置为0.
URG 为1时,表示包中有需要紧急处理的数据。
ACK 为为1时,确认应答的字段变为有效。TCP规定除了在最初建立连接时候的SYN包之外该位必须设置为1
PSH 该位为1时,表示需要将收到的数据立刻上传给上层应用协议。PSH为0时,则不需要立即传,而是先进行缓存。
RST 该位为1时,表示TCP连接出现异常,必须强制断开连接。
SYN 用于建立连接。SYN为1时表示希望建立连接,并在其序列号的字段进行序列号初始值的设定。
FIN 该位为1时,表示今后都不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。(每个主机又对对方的FIN包进行确认应答以后就可以断开连接了。不过主机收到FIN设置为1的TCP段以后不必马上回复一个FIN包,而是可以等到缓冲区中的所有数据都因已成功发送而被自动删除之后再发。)
窗口 用来让对方设置发送窗口的依据(告诉对方自己能接受多少数据),2字节
检验和 检验和字段检验的范围包括首部和数据这两个部分。在计算检验和是,要在TCP报文段的前面加上12字节的伪首部
紧急指针 指出在本报文段紧急数据共多少个字节(紧急数据放在本报文段数据最前面)

TCP三次握手

  1. 第一次
    第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize
    Sequence Numbers)。
  2. 第二次
    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
  3. 第三次
    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

UDP用户数据包协议

  • UDP采用非连接的方式提供网络应用层的事务处理,UDP不提供可靠性,也就是说,UDP协议不提供端到端的确认和重传功能,它不保证数据包一定能送达目的地,因此称为不可靠协议。
  • UDP协议是封装在IP数据包里中
    在这里插入图片描述

UDP报文格式
在这里插入图片描述
UDP的校验和有一个特殊之处:

  • UDP在计算校验和时,包含一个12字节的伪报头。
  • 伪报头包含IP报头的源IP和目的IP,目的是让UDP检测数据确定到达正确的目的端。
  • 伪报头不参与传输的。
    在这里插入图片描述

DNS

域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。DNS是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。DNS协议将域名转换为IP地址(也可以将IP地址转换为相应的域名地址),DNS使用UDP端口53。DNS 定义了两种报文 ,一种为查询报文;另一种是对查询报文的响应,称为响应报文。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1天前
|
网络协议 网络安全 Python
电脑中 TCP/UDP 端口是否开放的测试:令人意想不到的神奇策略等你发现!
【8月更文挑战第19天】在网络管理和维护中,常需确认TCP/UDP端口是否开放以确保服务运行顺畅。端口如同计算机对外通信的“门”,TCP提供可靠连接,UDP则快速但无连接。测试端口是否开放的方法多样:可用`telnet`测试TCP端口,如`telnet localhost 80`;UDP测试较复杂,可用`nc`工具,如`nc -u -z localhost 53`。此外,也有在线工具可供选择,但需确保其安全性。
|
3天前
|
缓存 网络协议 算法
TCP、UDP是如何流量、拥塞控制的?今天一口气讲透!
TCP、UDP是如何流量、拥塞控制的?今天一口气讲透!
|
3天前
|
网络协议 Windows
在电脑上测试TCP/UDP端口是否开放,还是得网络大佬这招厉害!
在电脑上测试TCP/UDP端口是否开放,还是得网络大佬这招厉害!
|
5天前
|
网络协议 视频直播 SDN
计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.
计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.
18 1
|
6天前
|
网络协议
|
5天前
|
存储 缓存 网络协议
用户态协议栈01-udp收发
用户态协议栈01-udp收发
|
1月前
|
网络协议
Qt中的网络编程(Tcp和Udp)运用详解以及简单示范案例
Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。 是关于Qt中TCP和UDP的基本使用和特点:
172 7
|
2月前
|
网络协议 JavaScript 安全
深入浅出TCP 与 UDP
深入浅出TCP 与 UDP
62 0
|
8天前
|
网络协议 安全 Java
面试热点问题之 - TCP/UDP
面试热点问题之 - TCP/UDP
22 1
|
20天前
|
网络协议 Java 数据处理
(一)Java网络编程之计网基础、TCP-IP协议簇、TCP、UDP协议及腾讯QQ通信原理综述
就目前而言,多数网络编程的系列的文章都在围绕着计算机网络体系进行阐述,但其中太多理论概念,对于大部分开发者而言,用途甚微。因此,在本系列中则会以实际开发者的工作为核心,从Java程序员的角度出发,详细解读Java的网络编程核心内容。