图解TCP/UDP原理(tcp,udp)
nanshan 2025-03-20 17:07 8 浏览 0 评论
引言:TCP UDP在OSI的七层模型,属于传输层,在通信行业,在软件开发行业,都是必须熟知的,那我们怎么去了解这两个呢。
TCP和UDP
TCP和UDP是传输层的两个重要的协议
TCP(Transmission Control Protocol) 传输控制协议
UDP(User Datagram Protocol)用户数据报协议
TCP的主要特点:
- 面向连接
- 每一条TCP连接只能是点对点的(一对一)
- 提供可靠交付的服务
- 提供全双工通信
- 面向字节流
UDP的主要特点:
- 无连接
- 尽最大努力交付
- 面向报文
- 无拥塞控制
- 支持一对一、一对多、多对一和多对多的交互通信
- 首部开销小(只有4个字段:源端口、目的端口、长度、检验和)
TCP进行拥塞控制的算法有4种:
慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)、快恢复(fast recovery)
TCP 传送的数据单位协议是 TCP 报文段(segment)。
UDP 传送的数据单位协议是 UDP 报文或用户数据报。
TCP 不提供广播或多播服务。
UDP的首部格式:
- 源端口:2个字节
- 目的端口:2个字节
- 长度:2个字节
- 检验和:2个字节
什么是端口
硬件端口与软件端口
在协议栈层间的抽象的协议端口是软件端口。
路由器或交换机上的端口是硬件端口。
硬件端口是不同硬件设备进行交互的接口,
而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
两个计算机中的进程要互相通信,不仅必须知道对方的 IP 地址(为了找到对方的计算机),
而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。
服务器端使用的端口号
熟知端口,数值一般为 0~1023。
登记端口号,数值为 1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。
客户端使用的端口号
又称为短暂端口号,数值为 49152~65535,留给客户进程选择暂时使用。
常见熟知端口:
FTP(File Transfer Protocol)文件传输协议 :21
TELNET远程终端协议:23
SMTP(Simple Mail Transfer Protocol)简单邮件传送协议:25
DNS(Domain Name System)域名系统:53
TFTP(Trivial File Transfer Protocol)简单文件传送协议:69
HTTP(HyperText Transfer Protocol)超文本传送协议:80
SNMP(Simple Network Management)简单网络管理协议:161
SNMP(trap):162
TCP UDP的通信方式
虽然在 UDP 之间的通信要用到其端口号,但由于 UDP 的通信是无连接的,因此不需要使用套接字。
TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字 (socket) 或插口。
每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。
TCP 连接 ::= {socket1, socket2} = {(IP1: port1),(IP2: port2)}
可靠传输的工作原理:
- 停止等待协议
- 连续ARQ协议
1)“停止等待”
就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
出现差错的情况:
在接收方 B 会出现两种情况:
B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)。M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。在这两种情况下,B 都不会发送任何信息。
如何保证 B 正确收到了 M1 呢?
解决方法:超时重传
A 为每一个已发送的分组都设置了一个超时计时器。
A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。
自动重传请求 ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。
2) 连续ARQ协议:
发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。
连续 ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
TCP运输连接建立:
TCP 是面向连接的协议。
运输连接有三个阶段:
- 连接建立
- 数据传送
- 连接释放
TCP 建立连接的过程叫做三报文握手
A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。
B 的 TCP 收到连接请求报文段后,如同意,则 发回确认。
B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x + 1,自己选择的序号 seq = y。
A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y +1。
A 的 TCP 通知上层应用进程,连接已经建立。
B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。
数据传输结束后,通信的双方都可释放连接。
TCP 连接释放过程是四报文握手。
数据传输结束后,通信的双方都可释放连接。
现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。
A 把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待 B 的确认。
B 发出确认,确认号 ack = u +1,而这个报文段自己的序号 seq = v。
TCP 服务器进程通知高层应用进程。
从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收。
若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接。
面试题:Tomcat 、Nginx 、Apache的区别?各自的优点是什么?
原创2019-05-28 18:27·老王谈运维
Tomcat 、Nginx 、Apache 的区别? 各自的优点是什么? 什么场景下用合适?
Apache
Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。
Apache相对于Tomcat的优点:
服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
Apache 相对于 Nginx 的优点:
apache的 rewrite 比nginx 的强大;支持动态页面;支持的模块多,基本涵盖所有应用;性能稳定。
缺点:配置相对复杂,自身不支持动态页面。
Tomcat:
Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
缺点:可以说Tomcat 只能用做java服务器
优点:动态解析容器,处理动态请求,是编译JSP/Servlet的容器。
Nginx
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
nginx相对于apache的优点:
轻量级,同样起web服务,比apache占用更少的内存及资源;抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能;高度模块化的设计,编写模块相对简单;提供负载均衡
缺点:Nginx 只适合静态和反向代理。
应用场景:
- 反向代理
- 负载均衡
- HTTP服务器(包含动静分离)
- 正向代理
三者之间的区别:
1)Nginx和tomcat的区别
nginx常用做静态内容服务和代理服务器,直接外来请求转发给后面的应用服务器(tomcat,Django等),tomcat更多用来做一个应用容器,让java web app泡在里面的东西。
注意:nginx只是把请求做了分发,不做处理!!!
2)nginx和Apache的区别
Apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。
Nginx轻量级,抗并发,处理静态文件好Apache超稳定,对PHP支持比较检单,nginx需要配合其他后端用,处理动态请求有优势,建议使用前端nginx抗并发,后端apache集群,配合起来。
应用场景分析:
Tomcat结合Apache、Nginx实现高性能的web服务器
Tomcat虽然是一个servlet和jsp容器,但是它也是一个轻量级的web服务器。它既可以处理动态内容,也可以处理静态内容。但是,tomcat的最大优势在于处理动态请求,处理静态内容的能力不如apache和nginx,我们可以利用nginx的高并发,低消耗的特点与tomcat一起使用。
通常情况下,tomcat与nginx、Apache结合使用,nginx、apache既可以提供web服务,也可以转发动态请求至tomcat服务器上。通常nginx、apache只提供代理的功能,也就是转发请求至tomcat服务器上,而对于静态内容的响应,则由前端负载均衡器来转发至专门的静态服务器上进行处理。其架构类似于如下图:
相关推荐
- 小白初学linux之无法修改系统分辨率
-
/*此文是做为自己的一个总结还有就是最好也可以给大家提供一些帮助。*/时间:2020年7月14日11:28:41我安装的是Ubuntu20.04LTS,昨天处理的是,grub的引导问题,因为是...
- Ubuntu 如何启动、停止或重启服务
-
在本文中,我们向您介绍在Ubuntu中启动、停止和重启服务的方法。列出Ubuntu中的所有服务在开始之前,先获取计算机上所有服务的列表,因为我们需要知道服务名称来管理服务。service--...
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
-
IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...
- Linux安装中文输入法-Google拼音输入法,搜狗输入法
-
主要步骤,选择适合自己的尝试:1)卸载之前没装好的搜狗输入法。@:~/Downloads$sudoapt-getremovefcitx*删除依赖库@:~/Downloads$sudoap...
- Ubuntu 22.04 请谨慎使用搜狗输入法,可能是你当机原因
-
在Ubunutu下没有什么有名的输入法,也就听说搜狗输入法有Linux版本,所以特意到官网去找了下载。在Ubuntu新版本里,他仍然用的是fcitx框架的输入引擎,而不是默认的ibus,所以要先把i...
- 前钢后胶!徐工XMR403VT小型压路机有点意思
-
【第一工程机械网原创】在越来越注重施工品质,对项目管理越来越精细化的今天,施工方在施工设备选择上,也越来越讲究设备的配套分工,因此小型压路机的应用场景也越来越多。徐工XMR403VT小型压路机高度集...
- 图大明白 | 404错误为什么是Not Found?为什么是404?
-
“404错误”大家都不陌生吧?常规来讲它长这样或者长这样艺术一点的长这样404NotFound意思就是所请求的页面不存在或者已被删除被称为“互联网最后一个界面”有很多同学发出疑问:为什么是404?...
- Nginx负载均衡安全配置说明2(nginx负载均衡部署)
-
上一节,我们对Nginx安全配置的几个知识点做了一个说明,例如限制IP访问、文件目录禁止访问限制、需要防止DOS攻击、请求方法的限制和限制文件上传的大小这个进行了一个分析说明,详细的文章请关注我的头条...
- 惊艳写真系列第403期,本期主人公—叶青
-
惊艳写真系列第403期,本期主人公—叶青制作不易,欢迎各位看官提供宝贵意见。如果您喜欢记得关注,么么哒。您的每一份点赞和关注都是对作者的最大认可(图片素材均来源于网络,如有侵权联系删除。)本篇是写惊艳...
- 先秦布币之尖足布、圆足布、方足布,今年圆足最高拍卖价16万一枚
-
在战国魏、韩地区诞生桥足平首布、锐角平首布之后,赵也诞生了尖足平首布,并且在尖足布的基础上,后来相继派生出了圆足布、三孔布,以及类圆足布和类方足布。一尖足布尖足布是从耸肩尖足空首布演变而来的,是黄河...
- 403 禁止访问错误的全面排查与解决方案
-
当遇到403Forbidden错误时,意味着服务器已接收并理解请求,但拒绝执行访问操作。以下从用户端、服务器端等多个维度,提供分步排查与解决方法。一、用户端基础排查1.检查URL准确性确认...
- 这才是2019年夏最高颜值的泳装(2019夏季泳装秀)
-
最近的天气是越来越热了,又到了暑期泳衣勇闯海滩的时刻了,打开ins,微博满满地都是各大博主晒的泳装照,明星们也纷纷跑到海边去度假了。虽然我们没有超模般地身材,但是到了海边我们也要成为人群中最亮眼的那颗...
- 朋友圈爆火!这组《衡中班主任的一天》漫画,感动了无数人!
-
很多人觉得做老师很轻松他们说有些老师一天一节课就下班了有双休,还有寒暑假,真让人羡慕呀······但事实真是这样吗?最近衡水中学的赵心扬同学画了一组漫画形象地还原了衡中班主任一天的生活那么衡中班主任一...
- 国家安全教育 | 一组漫画,带你走进国家安全!
-
当前,我国面临哪些安全威胁?下面带你来看一组漫画!①你要配合,注意保密。我绝不对别人讲。②这件事,千万别对别人讲。③咱单位的…喂!老k!你要当心,有风声了!④你的泄密行为已触犯了国家法律!①请你协助了...
- 400、403、404、405,访问网页时出现这些代码是什么意思?
-
今天小泽访问一个页面时,出现了403,很抱歉,您的访问请求被禁止的提示。相信经常用电脑访问网页的朋友都遇到过这种情况,有的网页提示错误代码403,有的提示404,那这些代码都代表了什么呢?有什么含义呢...
你 发表评论:
欢迎- 一周热门
-
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WindowsServer2022|配置NTP服务器的命令
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)