引言
每文学习一句诗:行一棋不足以见智,弹一弦不足以见悲 ——《淮南子·说林训》
译文:走一个棋子,不足以现出智慧;弹一根琴弦,不能够使人产生悲哀之情。
自述:互联网现如今已经成为每个人都离不开的一个通信工具,他渗透到生活的方方面面,在享受它为人们带来便利的同时,我们对他的工作原理也充满了好奇。下面我将介绍了HTTP的GET/POST/响应、IP 地址、端口,公内网,DNS及NAT地址转换的相关内容,让你初步了解互联网的通信过程。
如果本文对你有所帮助,那能否支持一下老弟呢,嘻嘻
✨✨个人主页 点击✨✨
目录
编辑
引言
IP地址(IPv4/Ipv6)
定义
分类
A类IP地址
B类IP地址
C类IP地址
特殊IP地址
IPv6地址的基本概念
端口
定义
HTTP协议
定义
工作流程
浏览器开发者工具NetWork使用
GET请求报文
POST请求报文
响应报文
状态码
编辑
公网/内网
编辑
NAT网络地址转换
DNS/DDNS/域名
IP地址(IPv4/Ipv6)
定义
IP地址指的是互联网中所有联网设备的“身份证”,就好比每个人都有自己的身份证号一样。
分类
分为IPv4地址和IPv6地址
IPv4:通常以点分十进制的格式来表示,即4个8位的二进制来表示。
例如:192.168.64.24(十进制)
11000000.10101000.01000000.00011000(二进制)
IP地址由网络地址和主机地址组成
A类IP地址
网络地址由第一个八位数组组成,且第一个字节以“0”开始,有效网络地址:8-1=7位
主机地址由后三个8位数组共24位(1.0.0.0-126.255.255.255)(0与127留作他用)
B类IP地址
网络地址由前两个八位数组组成,且第一个字节以“10”开始,有效网络地址:16-2=14位
主机地址由后两个8位数组共16位(128.0.0.0-191.255.255.255)
C类IP地址
网络地址由前三个八位数组组成,且第一个字节以“110”开始,有效网络地址:24-3=21位
主机地址由后一个8位数组共8位(192.0.0.0-223.255.255.255)
特殊IP地址
127.xxx.xxx.xxx :环回地址,用于本地测试
0.0.0.0:所有网络,用于指定缺省路由
1.1.1.1:广播地址,用于所有网络节点
IPv6地址的基本概念
IPv6(Internet Protocol Version 6)是下一代互联网协议,旨在解决IPv4地址枯竭问题。其核心特点包括:
-
地址长度:128位(IPv4为32位),提供约 3.4×10383.4×1038 个地址。
-
简化路由:层次化地址结构,优化网络管理。
-
增强功能:原生支持安全性(IPsec)、自动配置、多播等。
端口
定义
端口(Port):是设备上的一个“逻辑通道”,用于区分同一设备上运行的不同应用程序或服务。例如,Web服务、邮件服务、游戏等可以通过不同端口同时运行。
如果说IP地址是用于找到一台设备的,那么端口就是用于找到该设备中的一个运行的程序。
端口号是一个16位数字(0~65535)
端口号 | 通信协议 | 用途 |
80 | HTTP | 未加密网络传输 |
443 | HTTPS | 加密网络传输 |
21 | FTP | 文件传输 |
22 | SSH | 远程管理服务器 |
25 | SMTP | 发送邮件 |
53 | DNS | 域名解析 |
3389 | RDP | 远程桌面连接 |
-
客户端:发起请求时,操作系统会随机分配一个临时端口(动态端口)。
-
服务端:长期监听固定端口(如Web服务器监听80端口),等待请求。
当你在浏览器访问网站时:
你的电脑IP + 随机端口 → 服务器的IP + 80端口
HTTP协议
定义
HTTP(HyperText Transfer Protocol):
是一种 应用层协议,用于在客户端(如浏览器)和服务器之间传输超文本(如HTML页面、图片、视频等)。它是万维网(WWW)数据通信的基础。
HTTP的底层是TCP/IP协议
工作流程
- 客户端在浏览器中发起请求:用户在浏览器中输入URL(域名),例如www.baidu.com,此时浏览器会解析生成HTTP请求。
- DNS服务器解析域名:输入的域名会被DNS服务器解析得到目标主机的IP地址
- 建立TCP连接:根据解析得到的IP地址来访问目标主机的服务器的80端口,与其建立TCP连接。
- 发送GET/POST请求报文: 获取目标服务器的数据(GET),向目标服务器提交数据(POST请求)。
- 服务器返回相应报文:服务器会根据请求的内容来返回给客户端具体的响应。
- 关闭连接:但在HTTP1.1中保持连接复用(Keep-alive)。
浏览器开发者工具NetWork使用
以Eage浏览器为例,在浏览器页面右击选择“检查”,点击后,选择“网络”
如图片所示可以看到浏览器在网络请求中的一些数据。
GET请求报文
对象:浏览器向web服务器的获取数据的请求
以下时通过浏览器开发者工具得到的请求报文:
请求行
1.GET /serach.html HTTP/1.1 b表示请求方法,请求服务器中资源路径,HTTP协议版本
请求头
2.告诉服务器可以接受的数据类型
3.告诉服务端支持的压缩算法
4.告诉服务端支持的语言
5.和服务器端保持长连接
6.服务器端的IP地址和端口号,没有显示端口号则为80
7.让客户端请求不安全请求,https则是加密的
8.用户代理
空行\r\n
总结:http的get请求报文为
请求行\r\n
请求头\r\n
空行\r\n
注意每条数据后都要有一个\r\n
POST请求报文
对象:浏览器向web服务器提交数据的请求
在“负载”中可以看到请求体的内容,这里是JSON数据
HTTP POST请求报文
请求行\r\n
请求头\r\n
空行\r\n
请求体
响应报文
对象:服务器处理浏览器发送的请求而做出的响应。
这里面展示的是我自己写的简单服务器的响应头
响应行
HTTP/1.1 200 OK 协议版本 状态码 状态
响应头
Server:Rqtzws/1.0 服务器名称
空行\r\n
响应体
HTTP 响应报文
响应行\r\n
响应头\r\n
空行\r\n
响应体\r\n
状态码
状态码 | 说明 |
200 | 请求成功 |
307 | 重定向 |
400 | 错误请求 |
404 | 请求资源不存在 |
500 | 服务器出现错误 |
公网/内网
公网
公网是全球范围内的互联网,由无数网络设备(如路由器、服务器)通过TCP/IP协议互联而成,允许任何接入网络的设备进行公开通信。例如,访问百度、使用微信或浏览国外网站都是通过公网实现的。
特点:
- 具有全球唯一的公网IP地址
- 所有用户都可以访问
内网
内网是私有网络,仅在特定组织或家庭内部使用,设备通过路由器、交换机等连接。例如,家庭Wi-Fi、公司办公网络都是内网。
特点:
- 局域网IP地址(192.168.68.23),不同局域网中可重复使用。
- 内网设备不会直接暴露在公网内,外网用户无法根据内网地址访问该设备。
- 相比公网速度更快(如1Gbps)
那么内网中的设备是如何访问到公网的资源的呢?如访问百度,CSDN
这就是下面要提到的NAT网络地址转换技术
为什么会有公网和内网之分呢?
因为IPV4地址资源短缺,没有办法给每一台联网设备提供公网IP。
NAT网络地址转换
家庭网络(路由器)通过光纤/DSL接入(单层NAT)
以下将详细介绍内网设备是如何通过路由器来访问外网的。
- 首先我们从运营商中购买宽带,会得到一个公网IP。
- 再将路由器的网线连接到宽带中,配置路由器管理页面,使得内网设备连接。
- 此时连接的内网设备可以得到一个路由器分配的局域网IP地址
- 此时设备如果想要访问百度
-
设备的默认网关指向路由器的内网IP(如
192.168.1.1
),所有非本地的数据包都会发送给路由器处理。 -
设备通过路由器或运营商提供的DNS服务器(如
8.8.8.8
)将域名(如www.baidu.com
)解析为公网IP地址。 -
DNS解析后发现目标的IP地址不在本地局域网中,将数据包发送到默认网关(路由器),路由器启用NAT网络地址转换
-
NAT网络地址转换:将设备的内网IP地址替换为路由器的公网IP,并分配给一个随机的端口,并记录NAT映射表(包含内网设备的IP和端口,路由器公网IP和端口,目标服务器(百度)IP和端口)
-
通过网络访问百度服务器
-
服务器数据传回内网设备:百度服务器会根据NAT映射表来将相应的数据发送给表中的有公网ip的路由器。
-
路由器响应:路由器根据NAT映射表中的内网设备ip和端口,将数据传回内网设备。
移动网络(手机)依赖基站和蜂窝核心(多层NAT)
- 手机在开启移动网络后,会搜索附近基站信号(如5G频段n78),建立无线连接(RRC连接)。
- 手机向核心网发起PDN连接请求
- 运营商网关会给手机分配一个内网ip地址,若支持IPv6,手机可呢会直接得到ipv6地址
- 手机在浏览器中访问百度时,生成http数据包,他将通过附近的基站传输到核心网(5GC)
- 核心网再将数据发送至运营商的网关
- CGNAT(运营商NAT,多层)会将手机的内网IP转换为公网ip(该公网IP属于 移动网络运营商(如中国移动、中国联通、中国电信),是运营商从国际组织(如APNIC)申请获得的IP地址资源池中的一部分,是有限的),并记录内网IP,公网IP,目标IP组成的映射表
手机(内网IP:10.100.100.100) ↓ 运营商第一层NAT(映射到运营商内网IP:100.64.1.1) ↓ 运营商第二层NAT(映射到公网IP:120.230.45.67) ↓ 公网互联网
- 最后再将数据包通过运营商网络发送给百度服务器。
- 传回手机同上。
DNS/DDNS/域名
DNS定义
DNS(Domain Name System)是将人类可读的域名(如 www.example.com
)转换为机器可识别的IP地址(如 93.184.216.34
)的分布式数据库系统。
DNS核心功能:
域名解析:将域名转换为IP地址(正向解析)。
反向解析:通过IP地址查询域名(反向解析)。
DNS工作流程(以访问 www.baidu.com
为例):
浏览器缓存:检查本地缓存是否有域名对应的IP。
系统缓存:查询操作系统(如Windows的hosts文件)。
根域名服务器:返回顶级域(如 .com
)的服务器地址。
顶级域服务器:返回权威DNS服务器(如 baidu.com
的NS记录)。
结果缓存:将IP地址缓存到本地供后续使用。
DDNS定义
DDNS(Dynamic DNS)是DNS的扩展,用于在设备IP地址频繁变化时(如家庭宽带动态IP),自动更新域名与IP的绑定关系.例如国内花生壳的DDNS服务。
域名定义
域名是用户访问网站或服务的易记名称,由多级标签组成(如 mail.google.com
),通过层级结构(根域→顶级域→二级域→子域)管理。
通俗的来讲:就是将难记的IPv4地址转换为容易记忆的字符,换句话说就是用你的名字来代替你的身份证号一样。
域名的注册:国内如阿里云、腾讯云
根域名:
.
(通常省略)一级域名(顶级域名):
.com(
.com
(商业)、.org
(非营利组织)、.net
(网络服务))
二级域名:
example.com
三级域名:
cn.example.com
四级域名:
blog.cn.example.com
上述如果有误,请大佬指正批评! 如有帮助可以支持下老弟吗