HTTP 网络通讯过程

1. 网络模型概览

2. HTTP 网络通讯过程

 

 

1. 网络模型概览

  • OSI(Open System Interconnection)先有模型,后有协议,先有标准,后进行实践;而 TCP/IP 则相反,先有协议和应用再提出了模型,且是参照的 OSI 模型。
  • OSI 是一种理论下的模型,而 TCP/IP 已被广泛使用,成为网络互联事实上的标准。

 

2. HTTP 网络通讯过程

示例:简单的网络拓扑模型

 

 

详解:当键入网址到网页显示的通讯过程

客户端(发送方组包)

1)HTTP

  1. 浏览器解析 URL(协议、域名、资源路径)
  2. 生成 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 地址表包含两个信息:
    1. 设备的 MAC 地址
    2. 该设备连接在交换机的哪个端口上

9)路由器(出境)

  • 路由器基本原理:
    • 与交换机类似,通过查表判断包的(下一个路由器或目标设备)转发目标
    • 路由器基于 IP 设计,俗称三层(网络层)网络设备,其各端口具有 MAC 地址和 IP 地址(和计算机网卡一样);而交换机基于以太网设计,俗称二层(数据链路层)网络设备,其端口不具有 MAC 地址(也有三层交换机,具有部分的路由器功能)
  • MAC 头部的作用就是将包送达路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址
  • 包接收操作:将网线接口的电信号转成数字信号,并核对 MAC 地址
    • 完成包接收操作之后,路由器就会去掉包开头的 MAC 头部
    • 接下来会根据 MAC 头部后方的 IP 头部中的内容进行包的转发操作
  • 包发送操作:将网络包的数字信号转成电信号并通过端口发送出去,经过层层转发之后,到达最终目标设备
    • 首先是查询路由表判断转发目标
    • 过 ARP 协议根据对方的 IP 地址查询 MAC 地址,并将查询结果作为接收方 MAC 地址

以太网(传输)

在网络包(跨网段)传输过程中,源 IP 和目标 IP 始终是不会变的,一直变化的是 MAC 地址因为需要 MAC 地址在以太网内进行两个设备之间的包传输。

(对于同网段的二层转发,MAC 地址则不变。)

服务器端(接收方解包)

1)路由器(入境)

2)交换机(境内)

3)服务器(终点)

  1. 服务器层层扒开数据包头部最后通过 TCP 头部的端口号确认是 HTTP 进程想要的这个包
  2. HTTP 进程将资源封装在 HTTP 响应报文中,也依次穿上 TCP、IP、MAC 头部,从网卡出去,交由交换机转发到路由器,经过层层转发,最后到达客户端
  3. 客户端扒剩 HTTP 响应报文后,交给浏览器去渲染页面并显示资源
  4. 最后客户端要离开时,向服务器发起 TCP 四次挥手至此双方连接断开

示例:服务器和客户端相互扒皮

 

posted @ 2021-02-07 16:49  Juno3550  阅读(363)  评论(0编辑  收藏  举报