前言
这段时间一起白话下网络连接,这玩意儿看似简单其实可以说的细节还是蛮多滴。自己也是边学边笔记,打算分七八个篇章来白话下网络连接,含概了浏览器对消息的处理、TCP/IP数据的传输操作、数据在网线和网络设备上传输、探索接入网和网络运营商、服务器端一般是如何处理局域网的、浏览器响应web服务器的消息。
预计我会花一月时间用几篇文章来和大家一起畅游网络知识,概要如下:
1.我们先会从浏览器的工作方式来进行了解,从浏览器中输入URL,接着浏览器去对URL进行解析,然后按照不同的协议去封装请求消息,发送请求,之后浏览器会收到响应消息。
2.我们还会去了解消息数据是如何搬运的,协议栈会将消息打包并交给网卡,然后网卡会将包转为电信号并通过网线发送出去。
3.对于发送到网络的信号数据是如何进入互联网的,这里我们会了解集线器、交换机、路由器等设备,当路由器出发的数据进入互联网后,我们就要了解下网络运营商和互联往中的骨干网。
4.之后网络包数据终于来到了Web服务器所在的局域网中,接着它会遇到防火墙,防火墙会对数据进行检查,有些重复利用的数据包还会遇到缓存服务器,当然在一些大型网站中还会遇到分布式服务器上的负载均衡器等。
5.最终,我们的网络包数据来到了Web服务器,服务器是怎么处理的呢?也是会和客户端类似,也是由操作系统中的协议栈来完成数据解析,最终按照协议中的操作指示来把数据装入响应消息中,发回给客户端。当然回发的过程和前面是正好相反滴。
正片开始:
本篇先说说第一部分,浏览器是如何生成HTTP消息的。
-
浏览器输入网址
这里就要聊聊网址的格式了,当我们用HTTP协议访问Web服务器时,格式如 http://user:password@www.alspd.com:80/dir/file1.htm,这儿用户名、密码、端口号3个是可以省略的。其实不光可以用HTTP协议,还有好几种其他协议,例如我们用FTP协议去下载和上传文件时,格式如 ftp://user:password@www.alspd.com:80/dir/file1.htm 。读取本机文件时如file://localhost/C:path/file1.zip ,这里计算机名localhost是可以省略的。 发送电子邮件时如mailto:alspd@qq.com。还有阅读新闻时用到的news协议。 -
浏览器解析URL
当在浏览器中输入完地址后按下回车,浏览器就开始要对URL进行解析了,是根据不同的协议按各自协议的格式进行解析。URL可以分为协议、服务器地址、文件路径。 -
生成HTTP请求消息
对URL进行解析后,浏览器也就确定了web服务器和文件名,然后根据这些信息生成HTTP请求消息了。这里浏览器就要严格按照HTTP消息格式来生成请求消息了。这里说到HTTP消息格式,是分为2类的,分别是请求消息和响应消息。我们先说下请求消息,请求消息包含第一行的请求行,通过该行浏览器可以大致了解请求的内容。紧跟着会是一组消息头,直到遇到一行空行为止,用于表示请求的附加信息。接着就是消息体了,包含客户端向服务器发送的数据。这里我们说到了消息头,其实HTTP协议规定了很多头字段类型,常见的有Cache-Control控制缓存相关信息、Connection 设置发送响应之后TCP连接是否继续保持通信、Transfer-Encoding 表示消息主体的编码格式、User-Agent客户端的软件名称和版本号等信息、Accept客户端可支持的数据类型、 -
浏览器去访问
在浏览器解析完URL之后就会使用HTTP协议去访问web服务器了。先简单说下HTTP协议,HTTP协议简单说就是定义了客户端和服务器之间交互的消息内容和步骤,客户端会先向服务端发送请求消息,请求消息就包含了“对什么”要“进行怎样的操作”2个部分。所谓操作,就会有HTTP规定的几个方法如GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT。当web服务器收到请求后,就会去对什么进行操作,并将结果存放在响应消息中。 -
发送请求后收到响应
这里要说响应,其实就是前面提到的另一种HTTP消息类型响应消息了,这里格式和请求消息格式一样也是分为状态行、消息头、消息体3个部分。不同的是第一行状态行会包含状态码和响应短语,这里说下状态码,1XX告知请求的处理进度和情况、2XX成功、3XX表示需要进一步操作、4XX客户端错误、5XX服务器错误。 -
例子
这里我们请求下:https://blog.csdn.net/alspd_zhangpan 试试,如下图:
这里我们可以看到请求头和响应头以及状态码等。 -
本篇结语
晚上写了一个多小时好累,这篇只是简单将了下浏览器对我们输入地址的处理,我们可以了解到浏览器在拿到地址后是如何生成HTTP消息的。在下面的一篇中我将白话下IP以及DNS等相关知识,敬请期待,晚安。