| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 浏览器输入一个网址到显示一个页面,会发生哪些事? -> 正文阅读 |
|
[网络协议]浏览器输入一个网址到显示一个页面,会发生哪些事? |
计算机网络是计算机专业的基础课程,本文通过这样一个问题来简单总结TCP/IP 四层模型的一些知识。? 目录 1.url解析(应用层)浏览器首先解析用户输入的url,将用户输入的url封装成一个请求体。 一个URL具有丰富的信息,举例:http://www.xxx.com/aaa/bbb/ccc (1) http:表示访问的数据的协议 (2)www.xxx.com:访问的服务器名称 (3)aaa/bbb/ccc:访问的数据源的路径名(如果没有默认访问主页面,如index.html等等) 总结:我想通过http协议,访问www.xxx.com服务器下路径为aaa/bbb/ccc的数据(文件)。 确认以上内容后,浏览器便可以将我们的请求信息组装成http请求报文 报文主要包含三个部分: 请求(状态)行: 这里定义了请求/响应的一些元信息:如请求的方法,路径,响应的状态 消息头: 这里定义了消息的一些元信息:如消息的编码格式,内容形式等等一些基本信息 消息体: 这里面存放的就是消息的真实具体内容。报文的大致结构如下图所示: 2.DNS域名解析(应用层)通过浏览器解析完URL之后,需要操作系统将消息发生给对应的服务器,操作系统识别不了域名,只识别ip地址,即在发送之前,需要先明确www.xxx.com对应的ip是多少。而完成这个工作的过程称为DNS域名解析。 这可以类比成打电话,需要先知道对方的号码,我们一般会查询电话篇或者通讯录找到对方的号码,而DNS服务器就可以理解为网络钟的通讯录,其中记录了域名(对方)与IP(电话号码)的对应关系。 3.建立TCP/UDP连接(传输层)HTTP消息和对应的IP地址都明确后,我们需要与服务器建立连接,这个时候就要交给传输层的TCP/UDP。 HTTP基于TCP协议进行传输的,传输层TCP协议将Http消息体封装,在其加上头部文件,其结构如下: TCP是可靠的数据传输方式,主要体现在以下几个方面 1.每个TCP报文都有自己的序号,在发送到服务端,可以有效防止乱序问题。 2.每个TCP报文有确认号,用于确认发出去的数据对方是否收到。如果没有收到,则会进行重传,可以有效防止丢包问题。 3.TCP有自己的流量控制策略:双方都会说明自己处理数据的能力(窗口大小),可以防止通信双方发送过大或者过小的数据。 4.TCP有自己的拥塞控制策略。动态控制自己的发送速度,防止自己发送过快,对方处理不过来,出现拥塞问题。 5.TCP在传输数据前,需要进行三次握手来建立连接,保证连接的可靠性 TCP三次握手的基本流程:(这里不详细展开) step1:服务器主动监听某个端口,处于listen状态 step2:客户端主动发起连接SYN。(第一次握手) step3:服务器端收到发起的连接,返回SYN和ACK。(第二次握手) step4:客户端收到服务端发送的SYN和ACK,发送确认ACK的ACK。(第三次握手) step5:服务端收到确认ACK的ACK后,连接成功建立? 4.IP远程定位(网络层)TCP 模块在将数据封装好之后,需要委托 IP 模块将数据封装成网络包,网络包一样有自己的头文件,其中最重要的就是源ip地址和目标ip地址。 注意,IP头部中的协议指的是上一层的的协议。 5.点对点通信(网络接口层 or 链路层)生成了 IP 头部之后,网络包在 IP 头部的前面加上MAC头部,MAC头部中主要信息见下图 注意,MAC头部中的协议指的是上一层的的协议。 到这里,我们可以宏观看一下数据包的结构: 6.信号转换并发送(网络接口层 or 链路层)以上生成的数据都是数字信息,是没有办法直接传送给目标的,因为网线不能传输数字信息,需要借助网卡将数字信息转换为电信号并发送出去,最后借助路由器将信息发送出去。 同理,在解析过程中,则是一层一层的将数据包拆开,服务器从而可以获取我们所发送的信息内容。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:41:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |