计算机网络——计算机网络体系结构(3/4)-计算机网络体系结构分层思想举例
目录
发送请求报文
应用层构建HTTP请求报文
运输层添加TCP首部
网络层添加IP首部
数据链路层形成帧
物理层转化为比特流
路由器处理
服务器处理
发回响应报文
计算机网络体系结构分层思想举例
假设网络拓扑如下所示,主机属于网络N1,Web服务器属于网络N2,N1和N2通过路由器互连。
打开一个网页的简化过程:
我们使用主机中的浏览器来访问Web服务器,当输入网址后,主机会向Web服务器发送请求。Web服务器收到请求后,会发回相应的响应。主机的浏览器收到响应后,将其解析为具体的网页内容显示出来。
主机和Web服务器之间基于网络的通信,实际上是主机中的浏览器应用进程与Web服务器中的Web服务器应用进程之间基于网络的通信。
那么,体系结构的各层,在整个过程中起到了怎样的作用呢?
发送请求报文
应用层构建HTTP请求报文
从主机端按体系结构自顶向下的顺序来看,应用层按HTTP协议的规定,构建一个HTTP请求报文,这是该报文的内容:
应用层将HTTP请求报文交付给运输层处理。
运输层添加TCP首部
运输层给HTTP请求报文添加一个TCP首部,使之成为TCP报文段。这是TCP报文段的首部格式:
该首部的主要作用是为了区分应用进程以及实现可靠传输。运输层将TCP报文段交付给网络层处理。
网络层添加IP首部
网络层给TCP报文段添加一个IP首部,使之成为IP数据报,这是IP数据报的首部格式:
该首部的作用主要是为了使IP数据报可以在互连网上传输,也就是被路由器转发。网络层将IP数据报交付给数据链路层处理。
数据链路层形成帧
数据链路层给IP数据报添加一个首部和一个尾部使之成为帧。假设网络N1是以太网,这是以太网帧首部的格式:
该首部的作用主要是为了让帧能够在一段链路上或一个网络上传输,能够被相应的主机接收,这是以太网帧尾部的格式:
其作用是为了让目的主机检查所接收到的帧是否有误码。数据链路层将帧交付给物理层。
物理层转化为比特流
物理层将帧看作是比特流。由于网络N1是以太网,因此物理层还会给该比特流前面添加前导码。这是前导码的内容:
其作用是为了让目的主机做好接收帧的准备。物理层将添加有前导码的比特流变换成相应的信号发送到传输媒体。信号通过传输媒体到达路由器:
路由器处理
我们来看路由器的处理过程,
1.物理层将信号变成比特流
2.去掉前导码后,将其交给数据链路层,实际上交付的是帧
3.数据链路层将帧的首部和尾部去掉后,将其交付给网络层,实际上交付的是IP数据报
4.网络层解析IP数据报的首部,从中提取出目的网络地址, 然后查找自身的路由表,确定转发端口,以便进行转发。
5.网络层再将IP数据报交付给数据链路层,数据链路层给IP数据报添加一个首部和尾部,使之成为帧
6.数据链路层将帧交付给物理层,物理层将添加有前导码的比特流变换成相应的信号发送给传输媒体。
7.信号通过传输媒体到达Web服务器
服务器处理
信号通过传输媒体到达Web服务器,我们来看Web服务器的处理过程。物理层将信号变换为比特流,去掉前导码后,将其交给数据链路层,这实际上交付的是帧;数据链路层将帧的首部和尾部去掉后,将其交付给网络层,这实际上交付的是IP数据报;网络层将IP数据报的首部去掉后,将其交付给运输层,这实际上交付的是TCP报文段;运输层将TCP报文段的首部去掉后,将其交付给应用层,这实际上交付的是HTTP请求报文。
发回响应报文
应用层对HTTP请求报文进行解析,然后给主机发回HTTP响应报文。与之前的过程类似,HTTP响应报文需要在Web服务器层层封装,然后通过物理层变换成相应的信号,再通过媒体传输到路由器。路由器转发该响应报文给主机,主机通过物理层将收到的信号转换为比特流。之后通过逐层解封,最终取出HTTP响应报文。
END
学习自:湖科大——计算机网络微课堂
相关文章:

计算机网络——计算机网络体系结构(3/4)-计算机网络体系结构分层思想举例
目录 发送请求报文 应用层构建HTTP请求报文 运输层添加TCP首部 网络层添加IP首部 数据链路层形成帧 物理层转化为比特流 路由器处理 服务器处理 发回响应报文 计算机网络体系结构分层思想举例 假设网络拓扑如下所示,主机属于网络N1,Web服务器属…...

计算机网络,网络(OSI)七层模型,三次握手四次挥手,get与post请求区别,网络IO(BIO\NIO\AIO),TCP与UDP区别
1.OSI模型? 开放式系统互联通信参考模型(Open System Interconnection Reference Model) OSI网络七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP协议群简化了OSI七层模型:应用层、传输层、网络层、数据链路…...

【网络爬虫 | Python】数字货币ok链上bitcoin大额交易实时爬取,存入 mysql 数据库
文章目录 一、网站分析二、js 逆向获取 X-Apikey三、python 调用 js 获取 X-Apikey四、python 爬虫部分五、mysql 数据库、日志、配置文件、目录结构六、结尾 一、网站分析 oklink:https://www.oklink.com/ btc 大额交易:https://www.oklink.com/btc/tx-…...

【Servlet】实现Servlet程序
文章目录 1. 最朴素方式1. 创建项目2. 引入依赖3. 创建目录4. 编写代码5. 打包程序6. 部署程序7. 验证程序 2. 更方便方式1. 安装Smart TomCat插件2. 启动 1. 最朴素方式 1. 创建项目 选择Maven项目 2. 引入依赖 Maven项目创建完后会生成一个pom.xml文件,我们可…...

binlog 和 redolog 有什么区别
binlog 和 redolog 都是 Mysql 里面用来记录数据库数据变更操作的日志. binlog 其中 binlog 主要用来做数据备份、数据恢复和数据同步,在Mysql 的主从数据同步的场景中,master 节点的数据变更,会写入到 binlog 中,然后再把 binl…...
Git 修改已提交的用户名和邮箱
Git 修改已提交的用户名和邮箱 修改上一次提交的邮箱和用户名 git commit --amend --author Name<email>批量修改多次提交的邮箱和用户名 新建一个 .sh 脚本在 git 根目录下.sh脚本内容如下 git filter-branch --env-filter an"$GIT_AUTHOR_NAME" am"…...

小游戏外包开发流程及费用
小游戏的开发流程和费用会因项目的规模、复杂性和所选技术平台而有所不同。以下是一般的小游戏开发流程和可能的费用因素,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 开发流程: 概念和…...

Homeassistant docker配置
Homeassistant docker配置 【说明】本系列为自用教程,记录以便下次使用 【背景】一台J1900 4G64G的小主机,安装了OP系统,里面自带了Docker。为实现Homeassistant(简称HA)控制智能家居设备,进行如下配置。 【…...
Go 深入解析非类型安全指针
一、引言 非类型安全指针(也称为“裸指针”或“原始指针”)在编程领域中一直是一个具有争议和挑战性的主题。它们赋予程序员直接操作计算机内存的能力,为高级性能优化和底层系统交互提供了可能。然而,这种能力往往伴随着高风险&a…...
vue动态绑定class
Vue.js 允许您使用 v-bind 指令或简写的 : 来动态绑定 class 属性。这允许您基于某些条件为元素添加或删除类名,从而实现动态样式控制。以下是一些示例: 动态添加单个类名: <template> <div> <p :class"{ active: isActi…...

UDP网络通信反复发收
package UDP2;import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner;/* * 完成UDP 通信快速入门 实现发1收1*/ public class Client {public static void main(String[] args) throws Exception{// …...

ip报头和ip报文切片组装问题
在tcp层将数据打包封装向下传递后,网络层将其整个看为一个数据,然后对其数据加网络报头操作,在网络层最具有代表的协议就是ip协议。在这里我们探究ipv4的报头。 ip报头 4位版本:指定ip的版本号,对于ipv4来说就是4。 …...

linux之应用编程回顾总结
gcc编译过程 一个c/c文件要经过预处理、编译、汇编和链接4个阶段,才能变成可执行文件 1.预处理 C/C源文件中,以“#”开头的命令被称为预处理命令,如包含命令“#include”、宏定义命令“#define”、条件编译命令“#if”、“#ifdef”等。预处理…...

nginx配置负载均衡--实战项目(适用于轮询、加权轮询、ip_hash)
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
Mac GPU MPS常用方法
Requirements Mac computers with Apple silicon or AMD GPUs macOS 12.3 or later Python 3.7 or later Xcode command-line tools: xcode-select --install 判断是否可用 import torch if torch.backends.mps.is_available():mps_device torch.device("mps")x …...

【数据结构】线性表(四)双向链表的各种操作(插入、删除、查找、修改、遍历打印)
目录 线性表的定义及其基本操作(顺序表插入、删除、查找、修改) 四、线性表的链接存储结构 1. 单链表 2. 循环链表 3. 双向链表 a. 双向链表节点结构 b. 创建一个新的节点 c. 在链表末尾插入节点 d. 在指定位置插入节点 e. 删除指定位置的节点…...

数据结构和算法——图
图 有向图 带权图 邻接矩阵 邻接表相较于邻接矩阵,减少了存储空间; 邻接表 参考视频:【尚硅谷】数据结构与算法(Java数据结构与算法)_哔哩哔哩_bilibili...
大数据学习(16)-mapreduce详解
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
Android---OkHttp详解
OkHttp 是一套处理 HTTP 网络请求的依赖库,由 Square 公司设计研发并开源,目前可以在 Java 和 Kotlin 中使用。对于 Android App,OkHttp 现在几乎已经占据了所有的网络请求操作。RetroFit OkHttp 实现网络请求似乎成了一种标配。 因此&…...

向某文件中逐秒追加带序号输入当前时间 fgets fputs fprintf sprintf
//向某文件中逐秒追加带序号输入当前时间 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #include <unistd.h> int main(int argc, char const *argv[]) { time_t tv; // time(&tv);//法1:获取秒数 …...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...

OPENCV图形计算面积、弧长API讲解(1)
一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的API…...