HTTP 网络通讯过程
1. 网络模型概览
2. HTTP 网络通讯过程
1. 网络模型概览
- OSI(Open System Interconnection)先有模型,后有协议,先有标准,后进行实践;而 TCP/IP 则相反,先有协议和应用再提出了模型,且是参照的 OSI 模型。
- OSI 是一种理论下的模型,而 TCP/IP 已被广泛使用,成为网络互联事实上的标准。
2. HTTP 网络通讯过程
示例:简单的网络拓扑模型
详解:当键入网址到网页显示的通讯过程
客户端(发送方组包)
1)HTTP
- 浏览器解析 URL(协议、域名、资源路径)
- 生成 HTTP 请求报文
2)DNS(真实地址查询)
- 向 DNS 服务器查询服务器域名对应的 IP 地址
- 域名中越靠右的位置表示其层级越高
3)协议栈(指南帮手)
- 获取 IP 后,将之后的 HTTP 传输工作交给操作系统内核中的协议栈处理
- TCP/UDP:负责收发数据
- IP:负责将网络包送达给对方
4)TCP(可靠传输)
- 报文头部包含源端口号、目标端口号、序号、确认号等
- TCP 传输数据之前,要先三次握手建立连接(三次握手的目的是保证双方都有发送和接收的能力)
- TCP 报文生成:TCP 头部 + HTTP 报文
5)IP(远程定位)
- 将数据封装称网络包发送给通信对象
- IP 报文生成:IP 头部 + TCP 头部 + HTTP 报文
6)MAC(两点传输)
- 还需要加上 MAC 头部(发送方和接收方的 MAC 地址等信息),MAC 头部是以太网的头部
- MAC 作用:MAC 地址用来唯一标识设备,再通过 ARP 协议找到下一站路由器的 MAC 地址,实现两点之间的传输
- 至此,网络包报文(MAC 头部 + IP 头部 + TCP 头部 + HTTP 报文)如下图所示:
7)网卡(出口)
- 真正的数据发送过程:将数字信息(IP 网络包)转换为电信号,才能在网线上传输
- 控制网卡需要靠网卡驱动程序
- 网卡本身具有 MAC 地址,且会核对数据包的接收方 MAC 地址与自身 MAC 地址是否相同,不是则丢弃
8)交换机(送别)
- 交换机的设计:将网络包原样转发到目的地
- 交换机工作在 MAC 层,也称为二层(数据链路层)网络设备
- 交换机接收到达网线接口的电信号,并转换为数字信息
- 二层交换机本身具有一个 MAC 地址(标识自身硬件设备),但其各端口不具有 MAC 地址(三层交换机则每个端口都有 MAC 地址)
- 交换机根据交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的网线端口。交换机的 MAC 地址表包含两个信息:
- 设备的 MAC 地址
- 该设备连接在交换机的哪个端口上
9)路由器(出境)
- 路由器基本原理:
- 与交换机类似,通过查表判断包的(下一个路由器或目标设备)转发目标
- 路由器基于 IP 设计,俗称三层(网络层)网络设备,其各端口具有 MAC 地址和 IP 地址(和计算机网卡一样);而交换机基于以太网设计,俗称二层(数据链路层)网络设备,其端口不具有 MAC 地址(也有三层交换机,具有部分的路由器功能)
- MAC 头部的作用就是将包送达路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址
- 包接收操作:将网线接口的电信号转成数字信号,并核对 MAC 地址
- 完成包接收操作之后,路由器就会去掉包开头的 MAC 头部
- 接下来会根据 MAC 头部后方的 IP 头部中的内容进行包的转发操作
- 包发送操作:将网络包的数字信号转成电信号并通过端口发送出去,经过层层转发之后,到达最终目标设备
- 首先是查询路由表判断转发目标
- 通过 ARP 协议根据对方的 IP 地址查询 MAC 地址,并将查询结果作为接收方 MAC 地址
以太网(传输)
在网络包(跨网段)传输过程中,源 IP 和目标 IP 始终是不会变的,一直变化的是 MAC 地址,因为需要 MAC 地址在以太网内进行两个设备之间的包传输。
(对于同网段的二层转发,MAC 地址则不变。)
服务器端(接收方解包)
1)路由器(入境)
2)交换机(境内)
3)服务器(终点)
- 服务器层层扒开数据包头部,最后通过 TCP 头部的端口号确认是 HTTP 进程想要的这个包
- HTTP 进程将资源封装在 HTTP 响应报文中,也依次穿上 TCP、IP、MAC 头部,从网卡出去,交由交换机转发到路由器,经过层层转发,最后到达客户端
- 客户端扒剩 HTTP 响应报文后,交给浏览器去渲染页面并显示资源
- 最后客户端要离开时,向服务器发起 TCP 四次挥手,至此双方连接断开
示例:服务器和客户端相互扒皮