从URL到网页通信原理

内容导读

简单说,这个通信的过程是基于TCP/IP通信协议族规范的,完成从客户端到服务器端等一系列运作流程。1、TCP/IP协议族计算机与网络设备要相互通信,双方就必须基于相同的方法。这里就说到TCP/IP重要的层次化划分,按层次可以分为4层:应用层、传输层、网络层和数据链路层。如HTTP,FTP,DNS等协议;(2) 传输层:对应用层提供网络连接时的两台计算机的数据传输。传输层有两个性质不同的协议: TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议);(3) 网络层: 用来处理网络中流动的数据包,该层规定了通过怎样的传输路径将数据包传递到对方计算机。而计算机相对更容易处理一组数字,这时DNS域名解析服务应运而生。

前言

我们使用浏览器发送请求后页面是如何呈现在我们面前的呢?
在实际的学习web开发的过程中,网站开发,网络爬虫的程序设计都是需要这方面专业知识。接下来我们图解下这个URL到呈现页面的过程。

一、从URL请求响应过程概括

URL请求过程.jpg

我们在浏览器中输入一个 URL,回车之后便会在浏览器中观察到页面内容。实际上这个过程是浏览器向网站所在的服务器发送了一个 Request(请求),网站服务器接收到这个 Request 之后进行处理和解析,然后返回对应的一个Response(响应)给浏览器,Response里面就包含了页面的源代码等内容,浏览器再对其进行解析便将网页呈现了出来。
这个过程是如何规范并实现的呢?简单说,这个通信的过程是基于TCP/IP通信协议族规范的,完成从客户端到服务器端等一系列运作流程。

二、TCP/IP 通信协议大家族的整体介绍

前面说过网络的通信是基于TCP/IP协议族规范的。那TCP/IP协议族是什么呢?如何规范网络通信的过程呢?
1、TCP/IP协议族
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则,而我们就把这种规则称为协议(protocol)。通常我们说的TCP/IP协议族是互联网相关的各类协议族的总称。

TCP/IP族.png

TCP/IP协议族由那么多的协议组成,那功能上如何划分的呢?这里就说到TCP/IP重要的层次化划分,按层次可以分为4层:应用层、传输层、网络层和数据链路层。层次化的好处在于每个层次内部的设计可以自由改动,并通过各层的接口关联起来,而如果只有一个协议统筹就需要对所有涉及到的部分都重新设计。

2、TCP/IP各层的作用
(1) 应用层:决定了向用户提供应用服务时候的通信活动。如HTTP,FTP,DNS等协议;
(2) 传输层:对应用层提供网络连接时的两台计算机的数据传输。传输层有两个性质不同的协议: TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议);
(3) 网络层: 用来处理网络中流动的数据包,该层规定了通过怎样的传输路径将数据包传递到对方计算机。如IP协议;
(4) 数据链路层:用来处理网络连接中的硬件部分。 如FDDI协议;

三、TCP/IP是如何规范通信过程

通信过程.png

第一步、发送URL请求

URL格式介绍.png

Url由以下元素组成:
(1) 传送协议:http:或者https:等
(2) 层级URL标记符号,为“//”固定不变
(3) 访问资源需要的凭证信息(可省略)
(4) 服务器地址。通常为域名,有时为IP地址(实际通信中需要通过IP地址访问,域名通过DNS服务器解析出IP地址)
(5) 端口号。以数字方式表示,若为HTTP的默认值“:80”可省略
(6) 路径。以“/”字符区别路径中的每一个目录名称
(7) 查询。GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题
(8) 片段。以“#”字符为起点,使用片段标识符通常可标记出已获取资源中的子资源

第二步、DNS对请求的URL域名解析

DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议,它提供域名到 IP 地址之间的解析服务。计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名,用户通常使用主机名或域名来访问对方的计算机,而不是直接通过 IP 地址访问。而计算机相对更容易处理一组数字,这时DNS域名解析服务应运而生。DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。

DNS协议.png

第三步、生成HTTP请求报文

HTTP协议:按层次分, HTTP(HyperText Transfer Protocol,超文本传输协议)位于应用层,决定从客户端到服务器端等一系列通信内容及方式。

HTTP协议.png

第四步、TCP连接建立数据通信

TCP协议:按层次分, TCP(Transmission Control Protocol,传输控制协议) 位于传输层。TCP 协议为了更容易传送大数据会对数据分割,并能够确认数据最终是否送达到对方。

TCP协议.png

第五步、数据传输到IP地址

按层次分, IP(Internet Protocol)网际协议位于网络层。 IP协议的作用在于实现数据包传递到对方计算机IP地址,而IP间的通信依赖于MAC 地址(网卡所属的固定地址),需要再通过ARP 协议根据通信方的 IP 地址反查出对应的MAC 地址。

IP协议.png

第六步、服务器接收并解析请求报文后回传响应报文

服务器接收及解析请求报文后回传响应报文.png

小结

以上,我们了解各个协议的作用及通信的流程,针对Http协议后续再做详细介绍。

Android 系统(193)----图解从URL到网页通信原理相关推荐

  1. 图解从 URL 到网页通信原理

    前言 互联网的原始目的,就是为了传输文本(文本对话).那我们使用浏览器发送请求后页面是如何呈现在我们面前的呢? 接下来由图片介绍下URL到呈现页面的过程. 一.文本对话--从请求到响应 客户端(浏览器 ...

  2. 嵌入式linux和嵌入式android系统有什么区别和联系?

    转自:http://bbs.eeworld.com.cn/thread-430437-1-1.html 这个问题很多人问,尤其是初入嵌入式的菜鸟.其实大家都认为android是java,已经不是lin ...

  3. Tasker Android系统增强神器,Tasker(系统增强神器)

    Tasker系统提高:这个东西的强劲取决于没有是一般普遍的一些系统设定了,但也是由于太过高档,许多盆友取得这一软件以后,并不可以发觉他的强劲.但是大概先可以说,这个是一个依据客户定制环境变量的在制订执 ...

  4. android系统提供了url通信,Android两种HTTP通信,HttpURLConnection和HttpClient

    Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高. 不过HttpURL ...

  5. android 系统播放器播放https,android:自己实现能播放网络视频url的播放器

    android原生自带的播放器一般只能播放本地视频,而没有播放url的功能.不过android系统中有一个VideoView的控件可以实现这一功能. 简单实现如下: public class MyVi ...

  6. Android内核开发:图解Android系统的启动过程

    本文是<Android内核开发>系列的第六篇文章,前面的几篇文章介绍了Android内核开发相关的基础知识,包括:Android源码的下载.版本和分支介绍.编译和烧写等等,从本文起就要开始 ...

  7. Android应用安全开发之浅谈网页打开APP

    一.网页打开APP简介 Android有一个特性,可以通过点击网页内的某个链接打开APP,或者在其他APP中通过点击某个链接打开另外一个APP(AppLink),一些用户量比较大的APP,已经通过发布 ...

  8. Android系统(168)---Android 开源项目分类汇总

    Android开源项目分类汇总 原网址:https://blog.csdn.net/prince77qiqiqq/article/details/51338330 Android 开源项目第一篇--个 ...

  9. android系统浏览器下载流程

    android系统浏览器下载流程 标签: android browser download 简介 当我们用浏览器点开一个下载链接,然后去下载,从宏观上认识,有下载进度的实时更新和界面的跳转.整个过程中 ...

最新文章

  1. 数字孪生城市应用【案例集】,附下载
  2. IT人的学习方法论-2 学习的误区
  3. Kubernetes — Helm 软件包管理工具
  4. c mysql备份还原数据库_如何备份和还原MySQL数据库?
  5. Android 4.4 MediaRecorder系统结构
  6. String,StringBuffer与StringBuilder的区别
  7. .Net Core实战之基于角色的访问控制的设计
  8. 已知两点坐标拾取怎么操作_已知的操作员学习-第3部分
  9. “双十一缔造者”张勇
  10. 读书笔记-说服力 让你的PPT会说话
  11. 360手机浏览器_网信办:UC、QQ、360、搜狗等8款手机浏览器被纳入首批整治范围...
  12. python进程与线程_Python进程与线程知识
  13. 如何在苹果Mac上的登录窗口中打开辅助功能?
  14. 使用RecyclerView替代ListView(一)
  15. Amos简介及安装步骤
  16. 建立立方体求面积和体积并用两种判断方法判断两个立方体是否相等(键盘输入数据)
  17. 树莓派4B刷openwrt软路由系统,树莓派做有线路由器的扩展实现各种自定义操作
  18. 怎么下载lce_icesword下载
  19. 最小二乘法--通俗解释
  20. 蓬莱小课:零基础应届生如何转行学数据分析师?

热门文章

  1. window php 安装zip扩展,Windows下安装php_rar 扩展,让php实现rar文件的读取和解压
  2. 新增成功到编制为空bug_36 个JS 面试题为你助力金九银10
  3. HDVPSS模块介绍及使用
  4. Linux-kernel 网桥代码分析(一)
  5. ROS 教程之 navigation : 用 move_base 控制自己的机器人(2)
  6. 教学计划计算机,计算机教学计划模板
  7. 菜鸟学习笔记:Java提升篇8(线程2——线程的基本信息、线程安全、死锁、生产者消费者模式、任务调度)
  8. ML、DL、CNN学习记录8
  9. 【LeetCode】剑指 Offer 14. 剪绳子
  10. 微信小程序|开发实战篇之三