
计算机网络
文章平均质量分 69
鸭梨山大哎
life hard take it easy
展开
-
HTTP请求头(Request Headers)和响应头(Response Headers)
HTTP请求头(Request Headers)和响应头(Response Headers)是HTTP协议中用于客户端(如浏览器)和服务器之间通信的重要组成部分。请求头是客户端(如浏览器)发送给服务器的信息,告诉服务器客户端想要什么以及如何发送数据。响应头是服务器返回给客户端的信息,告诉客户端请求的结果以及如何处理返回的数据。是服务器返回给客户端的信息,描述了请求的结果和如何处理数据。是客户端发送给服务器的信息,描述了客户端的请求意图和配置。作用:告诉客户端响应体的长度,方便客户端接收完整数据。原创 2025-03-11 21:05:30 · 731 阅读 · 0 评论 -
为什么需要响应头
告诉客户端数据的类型,以便正确解析和显示。控制缓存,提高性能。处理跨域请求,允许或拒绝其他域名的访问。增强安全性,防止攻击。提供状态码,告诉客户端请求的结果。管理会话,通过 Cookie 保存用户状态。优化传输,通过压缩减少数据量。如果没有响应头,客户端和服务器之间的通信会变得混乱、低效,甚至不安全。响应头是 HTTP 协议中不可或缺的一部分,确保了网络通信的顺畅和可靠。原创 2025-03-10 18:53:22 · 630 阅读 · 0 评论 -
hosts文件入门
hosts文件是一个在操作系统中用于将主机名映射到 IP 地址的本地文本文件。它通常用于在没有 DNS(域名系统)的情况下,手动指定域名和 IP 地址的对应关系。hosts文件在几乎所有操作系统中都存在,包括 Windows、Linux 和 macOS。原创 2025-03-05 21:46:58 · 417 阅读 · 0 评论 -
nginx之listen命令入门
listen命令是 Nginx 配置中的关键指令,用于定义服务器监听的地址和端口,并支持多种参数以优化性能和功能。原创 2025-03-01 21:58:15 · 438 阅读 · 0 评论 -
nginx与fastapi联合应用
在使用 FastAPI 部署时,Nginx 的location指令用于定义如何处理不同的请求路径。location指令是 Nginx 配置中的关键部分,它决定了 Nginx 如何将请求路由到后端服务(如 FastAPI 应用)。原创 2025-03-01 21:34:05 · 335 阅读 · 0 评论 -
反向代理入门
反向代理是一种服务器,它接收客户端的请求,然后将这些请求转发给后端的一个或多个服务器,并将后端服务器的响应返回给客户端。客户端并不知道真正的后端服务器是谁,它只与反向代理通信。原创 2025-02-28 13:11:49 · 246 阅读 · 0 评论 -
nginx如何配合uvicorn工作
Nginx 和 Uvicorn 通常一起用于部署基于 Python 的异步 Web 应用程序(如 FastAPI 或 Starlette)。Uvicorn 是一个轻量级的 ASGI(Asynchronous Server Gateway Interface)服务器,用于运行异步 Python Web 应用,而 Nginx 则作为反向代理服务器,处理客户端请求并将它们转发给 Uvicorn。原创 2025-02-28 13:04:53 · 635 阅读 · 0 评论 -
Fastapi端口优先级
命令行参数的优先级高于代码中的配置。如果希望明确使用某个端口,建议直接在命令行中指定,例如:uvicorn app:app --reload --port 8000这样可以避免代码和命令行配置冲突,也更方便在不同环境中灵活调整。原创 2025-02-27 22:30:45 · 422 阅读 · 0 评论 -
服务器绑定到 `0.0.0.0`的含义
绑定到0.0.0.0表示服务器监听所有可用的网络接口,允许从本地、局域网和公网访问。这种配置适用于需要多设备访问或公网部署的场景,但需要注意安全性。如果仅需本地访问,可以绑定到127.0.0.1。原创 2025-02-27 21:35:57 · 866 阅读 · 0 评论 -
Flask公网 IP入门
支持(如果有公网 IP)”指的是本机的公网 IP。如果你的计算机有公网 IP,并且服务器绑定到0.0.0.0,那么可以通过http://<公网 IP>:8000访问你的应用程序。如果没有公网 IP,可以使用内网穿透工具或云服务器来实现外部访问。原创 2025-02-27 21:32:05 · 327 阅读 · 0 评论 -
如何排查端口占用
是一个常用的网络工具,可以显示网络连接、路由表、接口统计等信息。通过这些步骤,你可以找到占用端口的进程并采取相应措施。可以列出打开的文件,包括网络端口。可以显示使用指定端口或文件的进程。的替代工具,功能类似但更高效。找到的 PID,使用。原创 2025-02-25 00:06:22 · 257 阅读 · 0 评论 -
容器与虚拟机技术对比
容器和虚拟机(VM)都是虚拟化技术,但它们在实现方式、资源利用率、性能等方面存在显著差异。虚拟机之间完全隔离,每个虚拟机都有独立的硬件资源(CPU、内存、磁盘等)。容器之间的隔离性相对较弱,因为它们共享宿主机的内核。适用于需要强隔离、高安全性的场景,如企业级应用、开发测试环境、传统应用程序迁移等。适用于轻量级、快速部署的应用场景,如微服务架构、CI/CD流水线、云原生应用等。虚拟机的扩展性较差,尤其是在动态调整资源(如CPU、内存)方面不如容器灵活。安全性较高,因为每个虚拟机都是独立的沙盒环境。原创 2025-02-24 08:20:19 · 392 阅读 · 0 评论 -
ip地址可以用https访问吗
为IP地址生成自签名证书,配置到服务器上,即可通过HTTPS访问。但浏览器会提示不安全,需手动信任。IP地址本身不支持HTTPS访问,因为HTTPS是基于域名的加密协议。:直接为IP地址申请SSL证书通常不可行,因为证书颁发机构(CA)通常要求域名验证。:为IP地址绑定域名,并为该域名申请SSL证书,配置后可通过HTTPS访问。:如果有多个IP地址,可使用通配符证书覆盖所有子域名。文件将域名指向IP地址,再配置SSL证书。:在本地网络中,可通过修改。原创 2025-02-23 19:24:55 · 286 阅读 · 0 评论 -
http服务器入门
HTTP服务器是一种能够理解和响应HTTP协议请求的计算机程序。它在互联网中扮演着至关重要的角色,主要负责接收和处理来自客户端(如浏览器)的HTTP请求,并返回相应的HTTP响应。原创 2025-02-05 13:52:11 · 309 阅读 · 0 评论 -
回环地址是什么
127.0.0.1 是用于本地回环的IPv4地址,主要用于本地测试和网络诊断,确保数据包不离开设备。原创 2025-02-04 20:27:10 · 550 阅读 · 0 评论 -
Web服务可以不用80端口吗
Web服务完全可以不用80端口。实际上,Web服务可以配置在任何一个未被占用的端口上,不仅仅局限于80端口。80端口是HTTP协议的默认端口,而443端口则是HTTPS协议的默认端口,这两个端口是最常用的用于Web服务的。这种方式对于一些内部应用或者特定场景下的服务可能比较常见,但对于公开面向用户的网站来说,这可能会增加一点使用的复杂性,因为用户需要记住额外的端口号。但是,如果你使用了非标准端口(即除了80或443之外的端口),那么用户在访问你的网站时需要在URL中明确指定这个端口号,例如。原创 2025-02-04 15:14:39 · 259 阅读 · 0 评论 -
Host与port
端口是网络通信的关键,用于区分和管理不同服务。合理使用和管理端口能提高网络效率和安全性。原创 2025-02-04 14:52:04 · 584 阅读 · 0 评论 -
路由选择及分组转发
网络层的分组转发设备是路由器。路由器是一个具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。路由器实现了路由选择和分组转发的功能。典型路由器的结构如图所示。从图中可以看出,整个路由器结构可划分为两个部分:路由选择和分组转发。当分组到达路由器时,先由物理层、数据链路层、网络层三个模块对分组进行处理:物理原创 2021-07-18 08:39:50 · 6228 阅读 · 1 评论 -
私有IP地址入门
IP地址中的一类比较特殊,被称为私有IP地址。在现在的网络中,IP地址分为公网IP和私有IP地址。公网IP是在Internet使用的IP地址,而私有IP地址是在局域网中使用的IP地址。根据RFC1918,私有IP地址包括如下三个大小不同的地址空间,可供不同规模的企业网或专用网使用。①10.0.0.0~10.255.255.255。1个A类网络地址,共约1677万个IP地址。②172.16.0.0~172.31.255.255。16个B类网络地址,共约104万个IP地址。③192.168.0.0~19原创 2021-07-18 08:40:35 · 3904 阅读 · 0 评论 -
子网地址与子网掩码
在IPv4网络中,主要使用了A类、B类和C类IP地址。经过网络位和主机位的层次划分,三类IP地址能够适应于不同的网络规模。例如,使用A类IP地址的网络可以容纳1600多万台主机,而使用C类IP地址的网络仅仅可以容纳254台主机。但是,由于三类地址划分的固定性,在某些情况下,使用三类地址中的任何一种都存在很大的浪费现象。例如,随着计算机的发展和网络技术的不断进步,个人计算机应用迅速普及,小型网络(特别是小型局域网络)越来越多。这些网络多则拥有几十台主机,少则拥有两三台主机。对于这样一些小规模网络即使原创 2021-07-17 17:30:51 · 11509 阅读 · 0 评论 -
IP地址的分类
一个IP地址用32位二进制位来表示,可以被分为4个字节,每个字节用十进制来表示,则可以写成点分十进制记法。一个IP地址由两部分组成:网络位和主机位。网络位靠左,主机位靠右,两者相互连续,互不交叉。网络位又称网络部分或网络标识;主机位又称主机部分或主机标识。两级IP地址结构如图4-6所示。Internet最初定义地址类别是为了系统地给不同大小的网络分配地址前缀地址类别定义了用于网络位和主机位的位数,确定了网络的数量和每个网络中的主机数量。IPv4地址共分为五类,在五个地址类别中,A类、B类和C类地址是为原创 2021-07-17 15:41:48 · 473 阅读 · 0 评论 -
分层模型中数据传输过程
考虑图中主机1和主机2之间的数据传输过程。从直观上来看,主机1发送数据给主机2,中间先经过了路由器1和路由器2,最后到达主机2。事实上,整个数据的传送要经过封装和拆封两个过程。在发送方(也称为源)主机1,当应用程序使用TCP或UDP传送用户数据时,将用户数据送入TCP/IP协议栈,然后自上而下地逐个通过每一层,直到被当作一串比特流送入网络。每一层对收到的数据都需要增加一些首部信息,在数据链路层还需要增加尾部信息。这些操作过程称为封装。在接收方(也称为目的)主机2,当应用程序使用TCP或UDP传送用户数原创 2021-07-17 15:33:54 · 1092 阅读 · 1 评论 -
网络端口入门
什么是端口是一个协议下的一种约定A network port which is provided by the Transport Layer protocols ofInternet Protocol suite, such as Transmission Control Protocol (TCP)and User Diagram Protocol (UDP) is a number which serving endpointcommunication between two comput原创 2021-07-17 14:58:31 · 210 阅读 · 1 评论 -
什么是mac地址?
什么是mac地址?MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址 。ma原创 2021-07-17 14:36:07 · 7950 阅读 · 0 评论 -
TCP协议入门
TCP位于TCP/IP模型的传输层,它是一种面向连接的端到端协议。TCP作为传输控制协议,可以为主机提供可靠的数据传输。1.TCP的主要特点TCP是TCP/IP体系中非常复杂的一个协议,下面介绍TCP最主要的几个特点。(1)支持面向连接的传输服务应用程序在使用TCP提供的服务传送数据之前,必须先建立TCP连接。类似于日常生活中的电话通信,在进行通话之前需要先建立连接,双方知道电话已接通,开始语音对话,电话结束之后还要挂机释放连接。TCP提供服务之前建立连接的目的是通信双方为接下来的数据传送做好准备,原创 2021-07-17 12:59:44 · 765 阅读 · 1 评论 -
协议栈Protocol stack入门
什么是协议栈?就是一堆协议,比如TCP/IP 协议,有时候也指实现协议的具体软件A set of network protocol layers that work together. The OSI ReferenceModel that defines seven protocol layers is often called a stack, asis the set of TCP/IP protocols that define communication over theinterne原创 2021-07-17 10:01:18 · 628 阅读 · 1 评论 -
Web服务器程序解释请求消息并作出响应
图6.7展示了服务器程序的工作过程,这个过程不仅限于Web服务器,对于各种服务器程序都是共通的,收发数据的过程也是大同小异的。各种服务器程序的不同点在于图中(b)客户端通信部分的第一行调用read后面的如下部分。[处理请求消息内容];图6.7中只写了一行,但实际上这里应该是一组处理各种工作的程序,或者说这里才是服务器程序的核心部分。接下来让我们来对这一部分进行探索。Web服务器中,图6.7的read获取的数据内容就是HTTP请求消息服务器程序会根据收到的请求消息中的内容进行相应的处理,并生成响应消原创 2021-07-17 09:47:50 · 1190 阅读 · 1 评论 -
浏览器接收响应消息并显示内容
通过响应的数据类型判断其中的内容Web服务器发送的响应消息会被分成多个包发送给客户端,然后客户端需要接收数据。首先,网卡将信号还原成数字信息,协议栈将拆分的网络包组装起来并取出响应消息,然后将消息转交给浏览器。这个过程和服务器的接收操作相同。接下来,我们来看一看浏览器是如何显示内容的。要显示内容,首先需要判断响应消息中的数据属于哪种类型。Web可以处理的数据包括文字、图像、声音、视频等多种类型,每种数据的显示方法都不同,因此必须先要知道返回了什么类型的数据,否则无法正确显示。这时,我们需要一些信息才能原创 2021-07-17 09:29:03 · 1296 阅读 · 1 评论 -
TCP模块的断开操作
当数据收发完成后,便开始执行断开操作。在TCP协议的规则中,断开操作可以由客户端或服务器任何一方发起,具体的顺序是由应用层协议决定的。Web中,这一顺序随HTTP协议版本不同而不同,在HTTP1.0中,是服务器先发起断开操作。这时,服务器程序会调用Socket库的close, TCP模块会生成一个控制位FIN为1的TCP头部,并委托IP模块发送给客户端。当客户端收到这个包之后,会返回一个ACK号。接下来客户端调用close,生成一个FIN为1的TCP头部发给服务器,服务器再返回ACK号,这时断开操原创 2021-07-17 09:17:57 · 229 阅读 · 0 评论 -
TCP模块如何处理数据包
首先,TCP模块会检查收到的包对应哪一个套接字。在服务器端,可能有多个已连接的套接字对应同一个端口号,因此仅根据接收方端口号无法找到特定的套接字。这时我们需要根据IP头部中的发送方IP地址和接收方IP地址,以及TCP头部中的接收方端口号和发送方端口号共4种信息,找到上述4种信息全部匹配的套接字。找到4种信息全部匹配的套接字之后,TCP模块会对比该套接字中保存的数据收发状态和收到的包的TCP头部中的信息是否匹配,以确定数据收发操作是否正常。具体来说,就是根据套接字中保存的上一个序号和数据长度计算下一个序号,原创 2021-07-16 08:33:45 · 855 阅读 · 0 评论 -
什么是套接字?
套接字通常指的是封装了ip和port的结构体。主要对进程间通信或者网络通信的抽象。比如我们建立一个tcp连接,本质上就是两端都有一个套接字,记录了源ip,端口和目的ip,端口。真正套接字的实现其实还比较复杂,可以看man手册搜socket了解一下。或者看内核socket结构体的相关内容。socket 其实就是操作系统提供给程序员操作「网络协议栈」的接口,说人话就是,你能通过socket 的接口,来控制协议找工作,从而实现网络通信,达到跨主机通信。总结就是封装了ip和port的一个结构体参考大佬们原创 2021-07-16 08:33:19 · 1783 阅读 · 0 评论 -
TCP模块如何处理连接包
当TCP头部中的控制位SYN为1时,表示这是一个发起连接的包(图6.7①)。这时,TCP模块会执行接受连接的操作,不过在此之前,需要先检查包的接收方端口号,并确认在该端口上有没有与接收方端口号相同且正在处于等待连接状态的套接字。如果指定端口号没有等待连接的套接字,则向客户端返回错误通知的包如果存在等待连接的套接字,则为这个套接字复制一个新的副本,并将发送方IP地址、端口号、序号初始值、窗口大小等必要的参数写入这个套接字中,同时分配用于发送缓冲区和接收缓冲区的内存空间。然后生成代表接收确认的ACK号,用于原创 2021-07-16 08:26:32 · 498 阅读 · 0 评论 -
IP模块的接收操作
当网络包转交到协议栈时,IP模块会首先开始工作,检查IP头部,IP模块首先会检查IP头部的格式是否符合规范,然后检查接收方IP地址,看包是不是发给自己的。当服务器启用类似路由器的包转发功能时,对于不是发给自己的包,会像路由器一样根据路由表对包进行转发。**确认包是发给自己的之后,接下来需要检查包有没有被分片。**检查IP头部的内容就可以知道是否分片,如果是分片的包,则将包暂时存放在内存中,等所有分片全部到达之后将分片组装起来还原成原始包;如果没有分片,则直接保留接收时的样子,不需要进行重组。到这里,我们就原创 2021-07-16 08:19:15 · 179 阅读 · 0 评论 -
网卡将接收到的信号转换成数字信息
现在,客户端发送的网络包已经到达了服务器。到达服务器的网络包其本质是电信号或者光信号,接收信号的过程和客户端是一样的。接收操作的第一步是网卡接收到信号,然后将其还原成数字信息。局域网中传输的网络包信号是由1和0组成的数字信息与用来同步的时钟信号叠加而成的,因此只要从中分离出时钟信号,然后根据时钟信号进行同步,就可以读取并还原出1和0的数字信息了。信号的格式随传输速率的不同而不同,因此某些操作过程可能存在细微差异,例如10BASE-T的工作方式如图6.5所示。首先从报头部分提取出时钟信号(图6.5①),原创 2021-07-16 08:16:22 · 2158 阅读 · 2 评论 -
服务器概览
客户端与服务器的区别**首先,服务器和客户端有什么区别呢?**根据用途,服务器可以分为很多种类,其硬件和操作系统与客户端是有所不同的。但是,网络相关的部分,如网卡、协议栈、Socket库等功能和客户端却并无二致。无论硬件和OS如何变化,TCP和IP的功能都是一样的,或者说这些功能规格都是统一的。不过,它们的功能相同,不代表用法也相同。在连接过程中,客户端发起连接操作,而服务器则是等待连接操作,因此在Socket库的用法上还是有一些区别的,即应用程序调用的Socket库的程序组件不同。此外,服务器的程序原创 2021-07-16 08:09:59 · 160 阅读 · 1 评论 -
防火墙的结构和原理
主流的包过滤方式无论服务器部署在哪里,现在一般都会在前面部署一个防火墙,如果包无法通过防火墙,就无法到达服务器。因此,让我们先来探索一下包是如何通过防火墙的。防火墙的基本思路即只允许发往特定服务器中的特定应用程序的包通过,然后屏蔽其他的包。不过,特定服务器上的特定应用程序这个规则看起来不复杂,但网络中流动着很多各种各样的包,如何才能从这些包中分辨出哪些可以通过,哪些不能通过呢?为此,人们设计了多种方式,其中任何一种方式都可以实现防火墙的目的,但出于性能、价格、易用性等因素,现在最为普及的是包过滤方式。因原创 2021-07-16 07:55:45 · 1433 阅读 · 0 评论 -
Web服务器的部署地点
在公司里部署Web服务器网络包从互联网到达服务器的过程,根据服务器部署地点的不同而不同。最简单的是图5.1(a)中的这种情况,服务器直接部署在公司网络上,并且可以从互联网直接访问。这种情况下,网络包通过最近的POP中的路由器、接入网以及服务器端路由器之后,就直接到达了服务器。其中,路由器的包转发操作,以及接入网和局域网中包的传输过程都和我们之前讲过的内容没有区别。以前这样的服务器部署方式很常见,但现在已经不是主流方式了。这里有几个原因。第一个原因是IP地址不足。这样的方式需要为公司网络中的所有设备原创 2021-07-16 07:55:12 · 2851 阅读 · 2 评论 -
从互联网访问公司内网
对于从公司内网访问互联网的包,即便其发送方私有地址和端口号没有保存在对应表中也是可以正常转发的,因为用来改写的公有地址就是地址转换设备自身的地址,而端口号只要随便选一个空闲的端口就可以了,这些都可以由地址转换设备自行判断。然而,对于从互联网访问公司内网的包,如果在对应表中没有记录就无法正常转发。因为如果对应表中没有记录,就意味着地址转换设备无法判断公有地址与私有地址之间的对应关系。换个角度来看,这意味着对于没有在访问互联网的内网设备,是无法从互联网向其发送网络包的。而且即便是正在访问的设备,也只能向和互原创 2021-07-15 21:09:29 · 1798 阅读 · 0 评论 -
地址转换的基本原理
地址转换的基本原理是在转发网络包时对IP头部中的IP地址和端口号[插图]进行改写。具体的过程我们来看一个实际的例子,假设现在要访问Web服务器,看看包是如何传输的。首先,TCP连接操作的第一个包被转发到互联网时,会像图3.18这样,将发送方IP地址从私有地址改写成公有地址。这里使用的公有地址是地址转换设备的互联网接入端口的地址。与此同时,端口号也需要进行改写,地址转换设备会随机选择一个空闲的端口。然后,改写前的私有地址和端口号,以及改写后的公有地址和端口号,会作为一组相对应的记录保存在地址转换设备内部的一原创 2021-07-15 21:04:38 · 2760 阅读 · 0 评论 -
路由器的地址转换功能
首先,我们先了解一下地址转换功能出现的背景。所谓地址,就是用来识别每一台设备的标志,因此每台设备都应该有一个唯一不重复的地址,就好像如果很多人的地址都一样,那么快递员就不知道该把包裹送给谁了。网络也是一样,本来互联网中所有的设备都应该有自己的固定地址,而且最早也确实是这样做的。比如,公司内网需要接入互联网的时候,应该向地址管理机构申请IP地址,并将它们分配给公司里的每台设备。换句话说,那个时候没有内网和外网的区别,所有客户端都是直接连接到互联网的。尽管互联网原本是这样设计的,但进入20世纪90年代之后,互原创 2021-07-15 21:00:54 · 3242 阅读 · 1 评论