TCP/IP协议,TCP和UDP区别
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是一组用于计算机网络中的通信协议,它为数据传输提供了标准框架,广泛用于互联网和局域网中。TCP/IP协议包括多个层次,每个层次都负责特定的通信任务。它是现代互联网及大多数计算机网络的基础。
TCP/IP 协议栈的四个层次:
-
网络接口层(Network Interface Layer)
- 也称为数据链路层或物理层。
- 负责数据的物理传输,包括设备间的通信、数据的打包与传输等。
- 常见的协议有:以太网(Ethernet)、Wi-Fi、PPP(Point-to-Point Protocol)等。
-
互联网层(Internet Layer)
- 主要负责数据包的路由选择和地址管理。
- 关键协议:
- IP(Internet Protocol,互联网协议):负责将数据包从源主机传输到目标主机,基于IP地址进行寻址。
- ICMP(Internet Control Message Protocol,互联网控制报文协议):用于诊断网络问题(如
ping
命令使用 ICMP 协议)。 - ARP(Address Resolution Protocol,地址解析协议):将 IP 地址映射为物理硬件地址(如 MAC 地址)。
-
传输层(Transport Layer)
- 负责端到端的数据传输控制,确保数据可靠传输。
- 主要协议:
- TCP(Transmission Control Protocol,传输控制协议):面向连接、可靠的协议,提供流量控制、错误检查和重传机制,确保数据的完整性与正确顺序。
- UDP(User Datagram Protocol,用户数据报协议):无连接、不可靠的协议,适用于对速度要求高、对可靠性要求低的应用,如视频流、实时通信等。
-
应用层(Application Layer)
- 这一层直接面向用户,提供应用程序之间的通信服务。
- 主要协议:
- HTTP(Hypertext Transfer Protocol,超文本传输协议):用于万维网上的网页浏览。
- FTP(File Transfer Protocol,文件传输协议):用于文件的上传和下载。
- SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):用于发送电子邮件。
- DNS(Domain Name System,域名系统):用于将域名解析为IP地址。
TCP/IP协议的核心概念
-
IP地址:
- IP地址是网络中设备的唯一标识符,用于在网络中进行寻址。
- IPv4:32位地址,通常表示为四个十进制数(如
192.168.0.1
)。 - IPv6:128位地址,解决IPv4地址耗尽问题,通常表示为八组十六进制数(如
2001:0db8:85a3:0000:0000:8a2e:0370:7334
)。
-
端口号:
- 端口号用于区分同一主机上的不同应用程序。每个网络应用程序都监听一个特定的端口。
- 常见端口号:
- HTTP:端口 80
- HTTPS:端口 443
- FTP:端口 21
- SMTP:端口 25
-
数据包:
- TCP/IP协议中,所有通信数据都被分割为数据包传输。每个数据包包含头部和数据部分,头部包含源地址、目标地址、端口号等信息。
-
路由:
- 路由是数据包在网络中从源设备到达目标设备的过程。路由器根据目标IP地址和路由表来决定数据包的转发路径。
TCP 和 UDP 的区别
-
TCP(传输控制协议):
- 面向连接,数据传输前需要建立连接(如三次握手)。
- 提供可靠的数据传输,确保数据包按顺序到达,不丢失、不重复。
- 支持流量控制和拥塞控制,确保网络不会因过多数据包而崩溃。
- 用于需要可靠性的应用,如网页浏览(HTTP)、文件传输(FTP)等。
-
UDP(用户数据报协议):
- 无连接,数据包直接发送,无需建立连接。
- 不保证数据的顺序、完整性或可靠性。
- 适用于实时性要求高、对丢包容忍的应用,如视频流、实时游戏、DNS查询等。
TCP/IP 协议的工作流程
-
建立连接:
- 使用 TCP 时,通信的两端通过“三次握手”建立连接:
- 客户端发送SYN请求。
- 服务器回应SYN-ACK确认。
- 客户端发送ACK确认,连接建立。
- 使用 TCP 时,通信的两端通过“三次握手”建立连接:
-
数据传输:
- 连接建立后,数据以数据包的形式在网络中传输。每个数据包包含序列号、确认号等,用于确保数据正确传输。
-
关闭连接:
- 使用 TCP 时,通信完成后,通过“四次挥手”过程关闭连接:
- 客户端发送FIN请求。
- 服务器回应FIN-ACK确认。
- 客户端发送ACK确认。
- 服务器关闭连接。
- 使用 TCP 时,通信完成后,通过“四次挥手”过程关闭连接:
总结
- TCP/IP 是用于计算机网络通信的基础协议集。
- 包括 互联网层(IP)、传输层(TCP/UDP) 和 应用层 等,确保数据在网络中可靠传输和有效路由。
- 常见协议有 HTTP、FTP、SMTP、DNS 等。
- TCP 提供可靠、面向连接的服务,适合对数据传输有高可靠性要求的应用。
- UDP 提供简单、无连接的服务,适合实时性要求高的应用。
理解这些协议和它们的工作方式对于网络配置、故障排查和优化非常重要。
相关文章:

TCP/IP协议,TCP和UDP区别
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是一组用于计算机网络中的通信协议,它为数据传输提供了标准框架,广泛用于互联网和局域网中。TCP/IP协议包括多个层次,每…...

【go从零单排】Timer、Epoch 时间函数
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,time.Timer 是一个用于在指定时间后执行操作的计时器。…...

壁仞科技上市前最后一波 校招 社招 内推
随着美国大选结束,国内GPU 产业得到空前的的发展空间,国内芯片相关股票一片飘红。 国内大型 GPU厂商壁仞科技,摩尔线程等正紧锣密鼓地加紧上市。 GPGPU 芯片赛道来到了史无前例的红利点,抓住机会💪 壁仞科技正在火热…...

【微软报告:多模态基础模型】(2)视觉理解
欢迎关注【youcans的AGI学习笔记】原创作品 【微软报告:多模态基础模型】(1)从专家到通用助手 【微软报告:多模态基础模型】(2)视觉理解 【微软报告:多模态基础模型】(3)…...

Linux 驱动
四十三、Linux设备树 43.1 DTS、DTB 和 DTC DTS 是设备树源码文件 DTB 是将DTS 编译以后得到的二进制文件。 DTC 工具将.dts 编译为.dtb 43.2 DTS语法 43.2.1 .dtsi 头文件 在.dts 设备树文件中,可以通过“#include”来引用.h、.dtsi 和.dts 文件。 …...

【数学二】线性代数-线性方程组-齐次线性方程组、非齐次线性方程组
考试要求 1、会用克拉默法则. 2、理解齐次线性方程组有非零解的充分必要条件及非齐次线性方程组有解的充分必要条件. 3、理解齐次线性方程组的基础解系及通解的概念,掌握齐次线性方程组基础解系和通解的求法. 4、理解非齐次线性方程组的解的结构及通解的概念. 5、会用初等行变…...

Git别名设置
在 Git 中设置命令别名可以让你更高效地使用常见的 Git 命令。通过为常用命令创建简短的别名,可以减少输入的字符数并加速工作流程。 参考链接 设置 Git 命令别名的方法: 使用 Git 配置命令: Git 允许通过 git config 命令来设置命令别名。这…...

算法基础 -- 红黑树原理与插入伪代码
红黑树原理与插入伪代码 红黑树的原理 红黑树是一种自平衡的二叉搜索树,通过对节点的颜色(红色或黑色)以及结构的约束条件来保持树的平衡。红黑树的原理可以通过以下五个特性描述: 节点是红色或黑色。根节点必须是黑色。所有叶…...

力扣 LeetCode 27. 移除元素(Day1:数组)
解题思路: 注意:数组只能覆盖,不能删除 erase方法的复杂度为O( n )而不是O( 1 ),因为需要把删除后后面的数组向前移动 方法一:双层for循环暴力 方法二:快慢指针 fast表示新数组的元素 slow表示新数组元…...

微服务链路追踪skywalking安装
SkyWalking是一个开源的分布式追踪系统,主要用于监控和分析微服务架构下的应用性能。 它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案,特别适用于微服务、云原生架构和基于容器的环境(如Docker、K8s、Mesos&…...

mqtt学习笔记(一)
以解决问题方式逐步学习探索 mqtt使用场景mqtt可能缺点mqtt学习疑问探索1、mqtt主题发布过的历史消息,全新连接的client能消费到吗?2、mqtt的client掉线如何重连,重连后订阅的topic配置还在不?3、mqtt的client掉线重连后ÿ…...

Kafka Eagle 安装教程
目录 前言 一、安装前的准备 1. 系统要求 2. 安装 JDK 3. 安装 Kafka 和 Zookeeper 4. MySQL 环境准备 二、下载并安装 Kafka Eagle 三、配置 Kafka Eagle 1. 编辑配置文件 2. 配置 Kafka 和 Zookeeper 信息 四、启动 Kafka Eagle 五、访问 Kafka Eagle 六、测试功…...

Ajax 获取进度和中断请求
HTML加入一些内容方便看效果和做交互: <div><p>当前传输进度:<span id"progress">0%</span></p><button id"send">发送</button><button id"btn">中断</button> …...

实验5:网络设备发现、管理和维护
实验5:网络设备发现、管理和维护 实验目的及要求: 通过实验,掌握Cisco 路由器和交换机的IOS配置管理。自动从NTP服务器获取时间信息。能够利用TFTP服务器实现路由器和交换机配置文件的备份和恢复。同时验证CDP协议和LLDP协议的网络参数。完…...

kafka 生产经验——数据积压(消费者如何提高吞吐量)
bit --> byte --> kb -->mb -->gb --> tb --> pb --> eb -> zb -->yb...

对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍
对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍 对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)是一种基于密码的身份验证方法,用于安全地交换密钥…...

Ajax 与 Vue 框架应用点——随笔谈
老式 在老式的技术中,一个网页通常由前端工程师直接使用 HTML、CSS、JavaScript 编写而成 这种方式的优点很明显:简单粗暴,方便工程师以简单的思维完成工作 当然,缺点也很明显,包括但不限于: 直接原生开发…...

The Internals of PostgreSQL 翻译版 持续更新...
为了方便自己快速学习,整理了翻译版本,目前翻译的还不完善,后续会边学习边完善。 文档用于自己快速参考,会持续修正,能力有限,无法确保正确!!! 《The Internals of PostgreSQL 》 不是 《 PostgreSQL14 Internals 》…...

redis 原理篇 31 redis内存回收 内存淘汰策略
哦哦, 内存满了咋搞 就算过期key 删除,还是不够用, 这种问题没办法,只能了解一下啥解决方案了, 内存是有限的,一直存,肯定会满,这时,咋处理? 首先ÿ…...

微信小程序——实现二维码扫描功能(含代码)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

【go从零单排】HTTP客户端和服务端
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,net/http 包提供了强大的 HTTP 客户端和服务器功能。 &…...

Android 配置默认输入法
1.背景 最近有个国内的项目,预制了输入法apk,但是无法调出软键盘。原因是没有配置默认输入法,本文主要记录下如何配置默认输入法。 2.代码设置 设置默认输入法需要配置Settings.Secure.ENABLED_INPUT_METHODS和Settings.Secure.DEFAULT_IN…...

交易术语汇总(Technical Trading Dictionary)
Arbitrage (套利) --- 一种利用交易所之间的差价获利的方法。 Accumulation (累积) --- 在一种资产中建立头寸的过程。 Ask/Bid (询价/竞价) --- 卖出订单是询价(Ask),买入订单是出价(Bid)。 ATH(历史最高价) --- All-time high 全时高。 Bearish MS…...

【Docker】Docker基础及docker-compose
一、Docker下载 更新yum包 yum update 安装需要的软件包( yum-util 提供yum-config-manager功能,后两个是devicemapper驱动依赖) yum install -y yum-utils device-mapper-persistent-data lvm2 设置stable镜像仓库(使用阿里…...

从零开始的 Hugging Face 项目:我的首个在线 SQL 查询工具之旅20241111
从零开始的 Hugging Face 项目:我的首个在线 SQL 查询工具之旅 作为一名 AI 初学者,我最近完成了一个意义非凡的项目:在 Hugging Face Spaces 上构建了一个简单却实用的在线 SQL 查询工具。这个项目不仅让我了解了 Hugging Face 平台的核心功…...

让AI为你发声!Windows电脑快速部署ChatTTS文本转语音神器
文章目录 前言1. 下载运行ChatTTS模型2. 安装Cpolar工具3. 实现公网访问4. 配置ChatTTS固定公网地址 前言 嘿,朋友们!今天我们来聊聊如何在Windows系统上快速搭建ChatTTS,一个超酷的开源文本转语音项目。更棒的是,我们还可以用Cp…...

【AI换脸整合包及教程】FaceFusion 3.0.0:AI换脸技术的革新之旅
在人工智能技术的飞速发展中,AI换脸技术成为了近年来备受瞩目的焦点之一。FaceFusion 3.0.0,作为这一领域的最新力作,不仅继承了前代产品的优点,还在功能和用户体验上进行了全面升级和优化,为用户带来了前所未有的换脸…...

更新对象或数组的值的方法
一、数组的映射或更新 map(): 用于创建一个新数组,数组中的每个元素是对原数组元素执行函数后的结果。 const arr [1, 2, 3]; const newArr arr.map(item > item * 2); // [2, 4, 6]forEach(): 用于遍历数组,对每个元素执行操作,但不返…...

Java线程池浅谈(创建线程池及线程池任务处理)
1-认识线程池 什么是线程池? 线程池就是一个可以复用线程的技术。 不使用线程池的问题 比方说淘宝,不使用线程池,现在有一亿个线程同时进来,CPU就爆了。用户每发起一个请求,后台就需要创建一个新线程来处理…...

Dockerfile的使用
简介 制作docker镜像可以通过修改容器的方式,也通过通过Dockerfile文件的方式,下面通过Dockerfile文件的例子进行说明。 Dockerfile文件 FROM openjdk:8-alpine#ENV http_proxy http://127.0.0.1:7890 #ENV https_proxy http://127.0.0.1:7890#ENV TZ…...