了解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及网络基础的更多相关文章

  1. 【图解HTTP】第一章 了解web及网络基础

    [图解HTTP]了解Web及网络基础 Web页面是如何呈现的?根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出Web页面. 这种通过 ...

  2. http基础(1.了解web及网络基础,2.简单的http协议)

    第一章:了解web及网络基础 1.http:超文本传输协议 2.tcp/ip协议族:通常使用的网络是在tcp/ip协议族的基础上运作的,而http属于它内部的一个子集. 3.tcp/ip协议族按层次分 ...

  3. 第一章 了解Web及网络基础

    第一章 了解Web及网络基础 Web建立基础.HTTP如何诞生发展 1.使用HTTP协议访问Web 在浏览器地址栏中输入URL之后过程: 1)DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地 ...

  4. http(一)web和网络基础

    深入学习http不为别的,只为补充底层知识,打好根基,深入了解其他技术,擒贼先擒王,学好九阳神功以后,乾坤大挪移,太极剑就容易了,急于求成,就只能变周芷若.走着...... 来源于:图解HTTP 1. ...

  5. 图解 HTTP 笔记(一)——了解 Web 及网络基础

    本章内容:Web 建立在何种技术之上,HTTP 协议如何诞生并发展? 一.Web 基于 HTTP 通信 Web 使用一种名为 HTTP (HyperText Transfer Protocol,超文本 ...

  6. HTTP图解--了解Web及网络基础

    1.网络基础TCP/IP 通常使用的网络是在TCP/IP协议族的基础上运行的,http属于它内部的一个子集. TCP/IP协议族按层次分别分为:应用层.传输层.网络层和数据链路层.分层的好处在于各司其 ...

  7. 图解HTTP(1)之WEB及网络基础

    HTTP协议访问Web 当你在浏览器地址栏中键入有效URL(统一资源定位符)相应的网页页面就会展示出来,那么它是如何展示出来的, 首先这存在两个概念 ------客户端.服务器端 客户端(client ...

  8. 【HTTP】Web及网络基础&HTTP基础

    HTTP协议访问Web 一.大体访问过程 1. 浏览器地址栏输入URL 2. 浏览器从服务端获取文件资源 3. 浏览器显示Web页面 二.HTTP的版本历史 1. HTTP/0.9 没有作为正式的标准 ...

  9. 读《图解HTTP》有感-(了解web及网络基础)

    写在前面 <图解HTTP>是由上野宣先生著,于均良先生译 闲暇之余!写写博文甚是高兴.如有不准确,望各位斧正.共同学习! 正文 HTTP协议是什么?能做什么? HTTP(超文本传输协议)实 ...

随机推荐

  1. MySQL(十六)之MySQL用户管理

    一.MySQL用户管理概述 MySQL是一个多用户的数据库,MYSQL的用户可以分为两大类: 超级管理员用户(root),拥有全部权限 普通用户,由root创建,普通用户只拥有root所分配的权限 二 ...

  2. python去除读取文件中多余的空行

    今天在写登录程序练习的时候,黑名单文件中多了几行空行.导致运行的时候报错:IndexError: list index out of range 代码 brackData = open(brackDa ...

  3. Machine-learning of Andrew Ng(Stanford University)

    1.基础概念 机器学习是一门研究在非特定编程条件下让计算机采取行动的学科.最近二十年,机器学习为我们带来了自动驾驶汽车.实用的语音识别.高效的网络搜索,让我们对人类基因的解读能力大大提高.当今机器学习 ...

  4. Leetcode题解(十七)

    48.Rotate Image 题目: 分析:题目意思很简单,就是将一个n*n的矩阵顺时针旋转90度. 这道题难度不大,按照旋转的过程走一遍即可.代码如下: class Solution { publ ...

  5. tarjan求强连通分量+缩点+割点以及一些证明

    “tarjan陪伴强联通分量 生成树完成后思路才闪光 欧拉跑过的七桥古塘 让你 心驰神往”----<膜你抄>   自从听完这首歌,我就对tarjan开始心驰神往了,不过由于之前水平不足,一 ...

  6. Android 开发笔记___初级控件之实战__计算器

    功能简单,实现并不难,对于初学者可以总和了解初级控件的基本使用. 用到的知识点如下: 线性布局 LinearLayout:整体界面是从上往下的,因此需要垂直方向的linearlayout:下面每行四个 ...

  7. vue-cli 脚手架目录结构说明

    目录结构截图如下 /build 编译配置文件目录,由脚手架自动生成 /config webpack 配置文件目录,由脚手架自动生成 /node_modules node依赖目录,可通过package. ...

  8. ldap数据库--ldapsearch,ldapmodify

    简单介绍一下ldapsearch命令,在ldap搜索条目时很有用,只要适当调整filter就可以. 命令如下: ldapsearch -h hostname -p port -b baseDN -D ...

  9. Docker安装Mysql数据库容器(zz)

    zz自:http://blog.csdn.net/chengxuyuanyonghu/article/details/54380032 1.下载mysql的镜像: sudo docker pull m ...

  10. JAVA爬虫代码

    工程目录: 所需要的jar包为:   jsoup-1.10.2.jar /** * Created by wangzheng on 2017/2/19. */ public class Article ...