1. 网络模型概览

2. HTTP 网络通讯过程

1. 网络模型概览

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

2. HTTP 网络通讯过程

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

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

客户端(发送)

  1. HTTP
    1. 浏览器解析 URL(协议、域名、资源路径)
    2. 生成 HTTP 请求报文
  2. DNS(真实地址查询)
    1. 向DNS服务器查询服务器域名对应的 IP 地址
    2. 域名中越靠右的位置表示其层级越高
  3. 协议栈(指南帮手)
    1. 获取 IP 后将 HTTP 传输工作交给操作系统中的协议栈

      • TCP/UDP:负责收发数据
      • IP:负责将网络包发送给对方
  4. TCP(可靠传输)
    1. 报文头部包含源端口号、目标端口号、序号、确认号等
    2. TCP 传输数据之前,要先三次握手建立连接(三次握手的目的是保证双方都有发送和接收的能力
    3. TCP 报文生成:TCP 头部 + HTTP 报文
  5. IP(远程定位)
    1. 将数据封装称网络包发送给通信对象
    2. IP 报文生成:IP 头部 + TCP 头部 + HTTP 报文
  6. MAC(两点传输)
    1. 还需要加上 MAC 头部(发送方和接收方的 MAC 地址等信息),MAC 头部是以太网的头部
    2. MAC 作用:MAC 地址用来唯一标识设备,再通过 ARP 协议找到下一站路由器的 MAC 地址,实现两点之间的传输
    3. 网络包报文:MAC 头部 + IP 头部 + TCP 头部 + HTTP 报文
  7. 网卡(出口)
    1. 真正的数据发送过程:将数字信息(IP 网络包)转换为电信号,才能在网线上传输
    2. 控制网卡需要靠网卡驱动程序
    3. 网卡本身具有 MAC 地址,且会核对数据包的接收方 MAC 地址与自身 MAC 地址是否相同,不是则丢弃
  8. 交换机(送别)
    1. 交换机的设计:将网络包原样转发到目的地
    2. 交换机工作在 MAC 层,也称为二层(数据链路层)网络设备
    3. 交换机接收到达网线接口的电信号,并转换为数字信息
    4. 交换机的端口不核对对方 MAC 地址
    5. 交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的网线端口
  9. 路由器(出境)
    1. 路由器基本原理:

      • 与交换机类似,通过查表判断包的(下一个路由器或目标设备)转发目标
      • 路由器基于 IP 设计,俗称三层(传输层)网络设备,其各端口具有 MAC 地址和 IP 地址(和计算机网卡一样);而交换机基于以太网设计,俗称二层网络设备,其端口不具有 MAC 地址
    2. 包接收操作:将网线接口的电信号转成数字信号,并核对 MAC 地址
    3. 查询路由表确定输出端口:MAC 头部的作用就是将包送达路由器
    4. 包发送操作:将网络包的数字信号转成电信号并通过端口发送出去,经过层层转发之后,到达最终目标设备

以太网(传输)

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

服务器端(接收)

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

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

HTTP 网络通讯过程的更多相关文章

  1. 访问www.baidu.com后会发生什么(一次完整的网络通讯过程)

    1.在浏览器中输入www.baidu.com 这意味着浏览器要向百度发送一个网页数据包,要发送数据包,需要知道对方的IP地址,这里我们只知道网址为www.baidu.com,却不知道IP地址,此时应用 ...

  2. dicom网络通讯入门(2)

    第二篇,前面都是闲扯 其实正文现在才开始,这次是把压箱底的东西都拿出来了. 首先我们今天要干的事是实现一个echo响应测试工具 也就是echo 的scu,不是实现打印作业管理么.同学我告诉你还早着呢. ...

  3. DIOCP网络通讯流程

    DIOCP 运作核心探密   原文连接: http://blog.qdac.cc/?p=2362 原作者: BB 天地弦的DIOCP早已经广为人知了,有很多的同学都用上了它,甚至各种变异.修改版本也出 ...

  4. TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议

    原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...

  5. 在网络通讯中应用Protobuf

    在网络通讯中应用Protobuf Protobuf的设计非常适用于在网络通讯中的数据载体,它序列化出来的数据量少再加上以K-V的方式来存储数据,对消息的版本兼容性非常强:还有一个比较大的优点就是有着很 ...

  6. curl---一款实用的URL命令行网络通讯工具/库

    最近一段时间在看朴灵翻译的<深入浅出nodejs>,里面有提到一种脱离浏览器的客户端网络通讯工具,curl命令,自己在电脑上试了一下,感觉非常好用,而且莫名的感觉这是一个非常强大的网络工具 ...

  7. 自学Aruba1.5-Aruba体系结构-Aruba通讯过程

    点击返回:自学Aruba之路 自学Aruba1.5-Aruba体系结构-Aruba通讯过程 1. Aruba通讯过程 Aruba 通讯过程: ①AP连接到现有网络的交换机端口,加电起动后,获得IP地址 ...

  8. https建立通讯过程及运行机制 [转]

    ssl与tls: SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确 ...

  9. tcp/ip网络通讯安全加密方法

    tcp/ip网络通讯安全是一个广受关注的话题,现在也有一些基于tcp/ip加密技术标准如SSL,TLS等.但很多时候编写一些简单的网络通讯把这标准加密应用添加进来乎一下子把程序变得复杂了,而实现自己的 ...

随机推荐

  1. 安装并运行Nacos

    方式一:源码或者安装包 一.下载源码或者安装包 git clone https://github.com/alibaba/nacos.git 二.安装 cd nacos/ mvn -Prelease- ...

  2. 链表算法题二,还原题目,用debug调试搞懂每一道题

    文章简述 大家好,本篇是个人的第4篇文章. 承接第3篇文章<开启算法之路,还原题目,用debug调试搞懂每一道题>,本篇文章继续分享关于链表的算法题目. 本篇文章共有5道题目 一,反转链表 ...

  3. 手把手教你手写一个最简单的 Spring Boot Starter

    欢迎关注微信公众号:「Java之言」技术文章持续更新,请持续关注...... 第一时间学习最新技术文章 领取最新技术学习资料视频 最新互联网资讯和面试经验 何为 Starter ? 想必大家都使用过 ...

  4. 后端程序员之路 34、Index搜索引擎实现分析3-对文章索引的两层分块

    # part_indexer 对文章根据id的hash进行分块索引- 持有 search_index _inc_index[2]; search_index _history_index[2]; 进行 ...

  5. Nginx常用内核参数优化,安装,基本命令

    1.内核参数配置,默认的Linux内核参数考虑的是通用的场景,明显不符合用于支持高并发访问web服务的定义,所以需要修改Linux内核参数,使得Nginx可以拥有更高的性能.可以通过修改 /etc/s ...

  6. 剑指 Offer 58 - I. 翻转单词顺序 + 双指针

    剑指 Offer 58 - I. 翻转单词顺序 Offer_58_1 题目描述 方法一:使用Split函数 package com.walegarrett.offer; /** * @Author W ...

  7. 面试被吊打系列 - Redis原理

    小张兴冲冲去面试,结果被面试官吊打! 小张: 面试官,你好.我是来参加面试的. 面试官: 你好,小张.我看了你的简历,熟练掌握Redis,那么我就随便问你几个Redis相关的问题吧.首先我的问题是,R ...

  8. Selenium 4.0beta:读源码学习新功能

    Selenium 4 源码分析 这一篇文章我们来分析Selenium 4 python版源码. 除非你对Selenium 3的源码烂熟于心,否则通过对比工具分析更容易看出Selenium 4更新了哪些 ...

  9. 题解 洛谷P1990 覆盖墙壁

    DP康复训练题 原题:洛谷P1990 核心:递推/DP 题源应该是铺地砖,所以采用一摸一样的思路,只是有两种不同的方块 我们先用最最简单的方式尝试一下枚举当最后一行被填满的情况: 1.如果我们只用第一 ...

  10. IDEA的注册方式

    http://idea.lanyus.com/ 使用前请将"0.0.0.0 account.jetbrains.com"添加到hosts文件中 hosts文件在C:\Windows ...