HuaWei ❀ 网络传输底层介绍

如下图所示,终端访问web服务器域名时,其间所有传输的数据包信息如下分析:
HuaWei ❀ 网络传输底层介绍

配置IP地址
终端:192.168.1.1
网关出口:192.168.1.254
网关路由器公网地址:1.1.1.1
ISP路由器:1.1.1.2
Web服务器:www.abc.com(192.168.1.100)
DNS服务器:10.10.10.10
DNS网关:10.10.10.254

1、终端打开浏览器,搜索引擎输入:www.abc.com
2、终端发出ARP请求报文信息如下
SMAC 终端PC MAC地址
DMAC FF-FF(广播MAC地址)
SIP 终端IP地址
DIP 网关IP地址
3、终端发出的数据包达到交换机,交换机转发到其他所有接口,网关路由器收到该数据包
4、网关路由器回复ARP请求报文,发出ARP应答报文
SMAC 网关MAC地址
DMAC 终端MAC地址
SIP 网关IP地址
DIP 终端IP地址
5、ARP应答报文到达交换机后,交换机将该网关MAC地址存于自己的MAC地址表项中,并转发到终端
6、终端收到ARP应答报文后,将重新发送数据包,访问HTTP服务,发送DNS请求报文
SMAC 终端MAC地址
DMAC 网关MAC地址
SIP 终端IP地址
DIP DNS服务器 IP地址
SPort 随机端口
DPort UDP 53
应用层 DNS 请求数据包
Name:www.abc.com
7、当DNS请求报文到达网关路由器时,路由器需要配置SNAT(源地址转换)将源IP地址从 终端IP地址 修改为 网关路由器的公网IP地址,再次发送到ISP路由器
SMAC 网关路由器MAC地址
DMAC ISP路由器MAC地址
SIP 网关路由器公网IP地址(SNAT)
DIP DNS服务器 IP地址
SPort 随机端口
DPort UDP 53
应用层 DNS 请求数据包
Name www.abc.com
8、当ISP路由器接收到DNS请求数据包后,修改源MAC地址与目的MAC地址后转发到DNS服务器
9、DNS服务器收到DNS请求报文后,回复DNS应答报文到ISP路由器
SMAC DNS服务器MAC地址
DMAC DNS网关MAC地址
SIP DNS服务器IP地址
DIP 终端网关路由器公网IP地址
SPort UDP 53
DPort 请求报文中的随机端口
应用层 DNS 应答数据包
Type:A
Name:www.abc.com
Address:192.168.1.100
10、ISP路由器转发到终端出口路由器(过程省略),终端出口路由器接收到的数据包信息如下
SMAC ISP路由器MAC地址
DMAC 终端网关路由器MAC地址
SIP DNS服务器IP地址
DIP 终端网关路由器公网IP地址
SPort UDP 53
DPort 请求报文中的随机端口
应用层 DNS 应答数据包
Type:A
Name:www.abc.com
Address:192.168.1.100
11、经过终端出口路由器时,由于该路由器配置了SNAT,SNAT会话会将映射后的IP地址转换为映射前的IP地址,返回到内网中
SMAC 终端网关路由器MAC地址
DMAC 终端MAC地址
SIP DNS服务器IP地址
DIP 终端IP地址(SNAT会话)
SPort 随机端口
DPort UDP 53
应用层 DNS 应答数据包
Type:A
Name:www.abc.com
Address:192.168.1.100
12、DNS应答报文达到终端,终端开始访问Web服务器的IP地址,并且建立TCP连接
SMAC 终端MAC地址
DMAC 终端网关路由器MAC地址
SIP 终端IP地址
DIP Web服务器IP地址
SPort 随机端口
DPort TCP 80
SYN = 1
13、TCP连接数据转发效果与前面相同,不再赘述,Web服务器返回报文信息如下
SMAC 终端网关路由器MAC地址
DMAC 终端MAC地址
SIP Web服务器IP地址
DIP 终端IP地址
SPort TCP 80
DPort TCP SYN包中的随机端口
SYN = 1
ACK = 1
14、终端回复ACK报文
SMAC 终端MAC地址
DMAC 终端网关路由器MAC地址
SIP 终端IP地址
DIP Web服务器IP地址
SPort 随机端口
DPort TCP 80
ACK = 1
15、TCP连接建立后,终端发送HTTP请求报文,HTTP请求头部如下
HTTP请求由三部分组成,分别是请求行、消息报头、请求正文
Method Request-URL HTTP-Version CRLF
Method表示请示方法;
Request-URL是一个统一资源标识符;
HTTP-Version:请求的HTTP协议版本;
CRLF:表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)

16、Web服务器接收到HTTP请求报文后回复HTTP响应报文,信息如下
HTTP响应报文由三部分组成:响应行、响应消息报头、响应正文
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version:表示服务器HTTP协议的版本;
Status-Code:服务器发回的响应状态码;
Reason-Phrase:状态码的文本描述;

附带:(1)HTTP请求方式
GET:请求获取Request-URL所标识的资源;
POST:在Request-URL所标识的资源后附加新的数据;
HEAD:请求获取由Request-URL所标识的资源的响应消息报头;
PUT:请求服务器存储一个资源,并用Request-URL作为其标识;
DELETE:请求服务器删除Request-URL所标识的资源;
TRACE:请求服务器回送收到的请求信息,主要用户测试或诊断;
CONNECT:保留;
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求;

附带:(2)HTTP协议的URL标准格式
shceme://host[:port] [abs_path]?[query-string1]&[query-string2]
以常见的URL为例子,格式如下:
https:// 115.231.230.183:80 /space? uid=14804563
scheme host port path query-string
在URL中,各项的意义如下:
scheme:表明底层使用的协议,如HTTP/HTTPS;
host:HTTP服务器的IP地址或者域名;
port:HTTP默认端口为80,HTTPS默认端口为443,默认可以省略,非默认需要注明;
path:访问资源的路径,在服务器以www开头的路径,通常表示访问文件的地点;
query-string:发送给HTTP服务器的数据,此时,应用GET方式传输才有效,多个数据可用&进行分割,实现多组数据同时传输;