了解web及网络基础
了解web及网络基础
以下内容简单的说明了一下TCP/IP协议族中HTTP协议、DNS服务、IP协议的一些概念和关系。笔者只是对知识点进行了总结,仅供参考: )
转载请注明出处:了解web及网络基础
1.1使用HTTP协议访问Web
在一些大厂秋招面试的时候,会问到这样一个问题:当我们在web浏览器的地址栏输入URL时,Web页面是如何呈现的?
在还没有HTTP协议基础的同学,最简单的解释即:
1. 在浏览器地址栏内输入URL之后,信息会被送往某处。
2. 然后从某处获得响应之后,内容就会显示在Web页面上。
够简单了吧.. Web浏览器向Web服务器发送请求、获取文件资源等信息之后,再将内容显示在浏览器上。
像这种通过发送请求获取服务器资源的浏览器,都可以称为客户端。因此,像浏览器、原生应用都可以称为客户端。因为都是通过向服务器发送请求的方式获取数据的。
web使用一种名为HTTP(HyperText Transfer Protocol, 超文本传输协议)的协议作为规范,完成从客户端到服务器等一系列运作流程。可以说,Web是建立在HTTP协议上通信的。
1.2 网络基础TCP/IP协议族
为了理解HTTP协议,有必要先了解一下TCP/IP协议族。这里不要有误区,认为TCP/IP协议族特指TCP协议和IP协议。TCP/IP是互联网相关的各类协议族的总称。因此,HTTP、FTP、TCP、UDP、IP等协议和DNS服务都是TCP/IP协议族的子集。
1.2.1 TCP/IP的分层管理
TCP/IP协议族里重要的一点就是分层。TCP/IP协议族按层次分别分为以下4层:应用层、传输层、网络层、数据链路层。层次的区分参考OSI参考模型。
其实将TCP/IP协议族层次化是有好处的。比如,如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需要把变动的层替换掉即可。
TCP/IP协议族各层次的作用如下:
应用层:应用层决定了向用户提供应用服务时通信的活动。应用服务包括常见的HTTP协议、FTP协议和DNS服务。
传输层:传输层提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission Control Protocol, 传输控制协议),UDP(User Data Protocol, 用户数据包协议)。这两个协议的区别可以参考wiki: TCP, UDP
网络层:网络层用户处理网络上流动的数据包。数据包是网络传输的最小数据单位。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。IP协议就位于网络层。
数据链路层:又叫网络接口层,主要用于处理连接网络的硬件部分。如操作系统、硬件设备驱动、网络适配器(网卡)、光纤等。硬件上的范畴均在链路层的作用范围之内。
1.2.2 TCP/IP通信传输流
由上图可以看出,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。也就是说,客户端通过应用层、传输层、网络层、数据链路层到达服务器;而服务器以相反的方向到达客户端。
以HTTP举例。
客户端:
1. 首先,作为发送端的客户端在应用层(HTTP协议)发出一个查询订单的HTTP请求
2. 接着,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文,之后的文章会涉及)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。(TCP协议的作用)
3. 最后,在网络层(IP协议),增加作为通信目的地的MAC地址后转发给数据链路层。
接收端:
接收端的服务器在数据链路层接收到数据,按序号往上发送,一直到应用层。当数据包传输到应用层之后,才能算真正接收到有客户端发送过来的HTTP请求。
值得注意的是,在数据传输过程中,由上图可以看出,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。
这种把数据信息包装起来的做法称为封装。
1.3 与HTTP协议关系密切的协议:IP、TCP和DNS
1.3.1 负责传输的IP协议
按照TCP/IP协议族层次进行分类,IP协议位于网络层。这里要注意的是,不要把IP协议和IP地址混在一起,这里谈的IP是一种协议的名称。
IP协议的作用是将各种数据转发给对方。而要保证确实传送到对方,则需要满足各类条件。其中两个重要的条件分别是: IP地址和MAC地址。
IP地址指明了计算机被静态或动态分配到的地址,MAC地址是网卡所属的地址。同时,IP地址是可变的,而MAC地址是不会发生变化的。其中,MAC地址也叫物理地址、链路地址或者硬件地址。下面是我本地IP地址和MAC地址截图。
1.4.2 确保可靠的TCP协议
按照TCP/IP协议族的分层管理中,TCP协议位于传输层,提供可靠的字节流服务
所谓字节流服务是指为了方便传输,TCP协议会将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指能够把数据准确可靠的传输给对方。
简言之,TCP协议为了传输数据更加方便,将大数据分割成数据包并且打上标志,同时能够确保数据准确无误的传输给对方。
TCP协议提供可靠的传输服务而采用了三次握手(Three-way handshaking)策略。TCP协议把数据包发送出去之后,不会对之后的数据置之不理,而是会确认对方时候成功收到数据。因此,握手过程中使用了主要两种TCP标志----SYN和ACK。三次握手的过程如下:
1. 客户端向服务器发送SYN形式的数据包,表示客户端需要建立连接请求。
2. 服务端接收到之后,回传一个带有SYN/ACK标志的数据包给客户端,表示接受连接请求。
3. 客户端此时会向服务端ACK,表示接收到消息。
第一二次握手的目的是确保服务端能够接收到客户端的消息并且能够正确的应答。第二三次握手的目的是确保客户端能够接收到服务端的消息并且能够做出正确的应答。
那两次握手可以吗?不行。两次握手之后,客户端必须给服务端回传消息。这样做的目的是为了防止请求延迟或中断而导致服务端等待客户端的消息造成带宽等资源的浪费。详细的三次握手和四次分手可以参考这篇文章。传送门: 理解TCP协议的三次握手和四次分手。
如果在握手过程中某个阶段因为某些原因中断了,TCP协议会再次以相同的顺序发送相同的数据包。
1.4.3 负责域名解析的DN服务
DNS服务同HTTP协议位于应用层,它提供域名到IP地址之间的解析服务。从定义可以知道,可以通过DNS服务将域名解析成IP地址;同样的,也可以将IP地址反查相应的域名。
最后以一张图片来说明各种协议与HTTP协议的关系。
下一篇文章会针对HTTP/1.1协议结构的知识点做总结。
未完待续: )
了解web及网络基础的更多相关文章
- 【图解HTTP】第一章 了解web及网络基础
[图解HTTP]了解Web及网络基础 Web页面是如何呈现的?根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出Web页面. 这种通过 ...
- http基础(1.了解web及网络基础,2.简单的http协议)
第一章:了解web及网络基础 1.http:超文本传输协议 2.tcp/ip协议族:通常使用的网络是在tcp/ip协议族的基础上运作的,而http属于它内部的一个子集. 3.tcp/ip协议族按层次分 ...
- 第一章 了解Web及网络基础
第一章 了解Web及网络基础 Web建立基础.HTTP如何诞生发展 1.使用HTTP协议访问Web 在浏览器地址栏中输入URL之后过程: 1)DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地 ...
- http(一)web和网络基础
深入学习http不为别的,只为补充底层知识,打好根基,深入了解其他技术,擒贼先擒王,学好九阳神功以后,乾坤大挪移,太极剑就容易了,急于求成,就只能变周芷若.走着...... 来源于:图解HTTP 1. ...
- 图解 HTTP 笔记(一)——了解 Web 及网络基础
本章内容:Web 建立在何种技术之上,HTTP 协议如何诞生并发展? 一.Web 基于 HTTP 通信 Web 使用一种名为 HTTP (HyperText Transfer Protocol,超文本 ...
- HTTP图解--了解Web及网络基础
1.网络基础TCP/IP 通常使用的网络是在TCP/IP协议族的基础上运行的,http属于它内部的一个子集. TCP/IP协议族按层次分别分为:应用层.传输层.网络层和数据链路层.分层的好处在于各司其 ...
- 图解HTTP(1)之WEB及网络基础
HTTP协议访问Web 当你在浏览器地址栏中键入有效URL(统一资源定位符)相应的网页页面就会展示出来,那么它是如何展示出来的, 首先这存在两个概念 ------客户端.服务器端 客户端(client ...
- 【HTTP】Web及网络基础&HTTP基础
HTTP协议访问Web 一.大体访问过程 1. 浏览器地址栏输入URL 2. 浏览器从服务端获取文件资源 3. 浏览器显示Web页面 二.HTTP的版本历史 1. HTTP/0.9 没有作为正式的标准 ...
- 读《图解HTTP》有感-(了解web及网络基础)
写在前面 <图解HTTP>是由上野宣先生著,于均良先生译 闲暇之余!写写博文甚是高兴.如有不准确,望各位斧正.共同学习! 正文 HTTP协议是什么?能做什么? HTTP(超文本传输协议)实 ...
随机推荐
- web 开发中的路由是什么意思
路由: 就是一个路径的解析,根据客户端提交的路径,将请求解析到相应的控制器上 从 URL 找到处理这个 URL 的类和函数
- BZOJ-1225-[HNOI2001] 求正整数
Description 对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m.例如:n=4,则m=6,因为6有4个不同整数因子1,2,3,6:而且是最小的有4个因子的整数. Input n ...
- unity客户端基本框架(转载)
框架概述: 基础系统的框架搭建,其中包括: UI框架(NGUI + MVC) 消息管理(Advanced CSharp Messenger) 网络层框架(Socket + Protobuf ) 表格数 ...
- lua State加载部分库
lua State加载部分库 在lua中,通常我们用luaL_openlibs(L)加载所有的lub标准库,但是有时候我们想只加载部分,有没有什么好的办法呢?在luaproc看到如下办法: stati ...
- C++获取本机IP等信息
运行环境:VS2008,win7,代码来源于MSDN,相关函数可以查看MSDN中的函数定义.. 代码如下: #include <winsock2.h> #include <ws2tc ...
- hdu 4717 Tree2cycle(树形DP)
Tree2cycle Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)Tot ...
- echarts2.2.7本地搭建
1.首先下载echarts2.2.7,解压到本地,解压后的目录如下: 2.在WebContent下建立一个名为build的目录,复制echarts2.2.7下面的build下面的dist目录到ecli ...
- [DeeplearningAI笔记]ML strategy_2_3迁移学习/多任务学习
机器学习策略-多任务学习 Learninig from multiple tasks 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.7 迁移学习 Transfer Learninig 神 ...
- C# let 子句
在查询表达式中,存储子表达式的结果有时很有帮助,可在后续子句中使用. 可以通过 let 关键字执行此操作,该关键字创建一个新的范围变量并通过提供的表达式结果初始化该变量. 使用值进行初始化后,范围变量 ...
- cloneNode克隆节点在不同浏览器的差异
cloneNode是用于克隆节点的,如果待克隆的节点还有子节点以及自定义属性.添加的有事件,那么克隆时,可以指定是克隆节点本身,还是将其所有子节点信息也克隆进去,这是通过给cloneNode传递一个布 ...