当前位置: 首页 > article >正文

【HTTP】解码网络通信的奥秘:HTTP,IP 地址,端口,DNS及NAT地址转换的协同之舞

引言

        每文学习一句诗:行一棋不足以见智,弹一弦不足以见悲 ——《淮南子·说林训》

        译文:走一个棋子,不足以现出智慧;弹一根琴弦,不能够使人产生悲哀之情。

        自述:互联网现如今已经成为每个人都离不开的一个通信工具,他渗透到生活的方方面面,在享受它为人们带来便利的同时,我们对他的工作原理也充满了好奇。下面我将介绍了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)

常见的端口号及用途
端口号通信协议用途
80HTTP未加密网络传输
443HTTPS加密网络传输
21FTP文件传输
22SSH远程管理服务器
25SMTP发送邮件
53DNS域名解析
3389RDP远程桌面连接
  • 客户端:发起请求时,操作系统会随机分配一个临时端口(动态端口)。

  • 服务端:长期监听固定端口(如Web服务器监听80端口),等待请求。

当你在浏览器访问网站时:

你的电脑IP + 随机端口 → 服务器的IP + 80端口

HTTP协议

定义

HTTP(HyperText Transfer Protocol)
是一种 应用层协议,用于在客户端(如浏览器)和服务器之间传输超文本(如HTML页面、图片、视频等)。它是万维网(WWW)数据通信的基础。

HTTP的底层是TCP/IP协议

工作流程

  1. 客户端在浏览器中发起请求:用户在浏览器中输入URL(域名),例如www.baidu.com,此时浏览器会解析生成HTTP请求。
  2. DNS服务器解析域名:输入的域名会被DNS服务器解析得到目标主机的IP地址
  3. 建立TCP连接:根据解析得到的IP地址来访问目标主机的服务器的80端口,与其建立TCP连接。
  4. 发送GET/POST请求报文: 获取目标服务器的数据(GET),向目标服务器提交数据(POST请求)。
  5. 服务器返回相应报文:服务器会根据请求的内容来返回给客户端具体的响应。
  6. 关闭连接:但在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

上述如果有误,请大佬指正批评! 如有帮助可以支持下老弟吗


http://www.kler.cn/a/573713.html

相关文章:

  • 一个结合创意与技术的Python数据可视化案例,展示动态3D粒子轨迹图与热力图的融合效果,代码包含注释与关键技术点解析
  • 【C++】函数指针和指针函数
  • 什么是美颜SDK?从几何变换到深度学习驱动的美颜算法详解
  • FieldFox 手持射频与微波分析仪
  • 六十天前端强化训练之第七天CSS预处理器(Sass)案例:变量与嵌套系统详解
  • 零基础C语言学习日志19(C语言内存函数)
  • 个推助力小米米家全场景智能生活体验再升级
  • 智能家居遥控革命!昂瑞微HS6621EM:用「芯」定义AIoT时代的语音交互标杆
  • 蓝桥杯备考:BFS最短路径之kotori迷宫
  • go数组的声明和初始化
  • 黄昏时间户外街拍人像Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 面试问题(一)
  • Python数据可视化——Matplotlib的基本绘图:图形、轴、标签
  • GPU 英伟达GPU架构回顾
  • 【Git】Git 初识
  • 利用PyQt简单的实现一个机器人的关节JOG界面
  • 心率提取,FFT
  • (一)Java虚拟机——JVM的组成
  • 从0开始的操作系统手搓教程21:进程子系统的一个核心功能——简单的进程切换
  • Pytorch中的ebmedding到底怎么理解?