第一小节:生成HTTP请求消息
流程:浏览器解析用户输入的URL——生成发送给Web服务器的请求消息——DNS服务器查询Web服务器域名对应的IP地址——委托操作系统内部的协议栈向服务器发送消息
1. 浏览器如何解析URL?
-
浏览器将URL的各个元素进行拆分再进行定位,例如:
http://www.glasscom.com/dir/index.html
http+ //+ Web服务器名+ /+目录名+ /+文件名 -
省略文件名的情况:
(1)URL是以“/”结尾,例如:http://www.glasscom.com/dir/,截至到目录名后,文件名被省略了,但是浏览器依然可以访问,是因为事先在服务器上设置好默认访问的文件名了,大多数情况是index.html或者default.html;
(2)URL以“/”结尾,http://www.glasscom.com/,截至到服务器名后,目录名文件名都被省略了,该情况同(1),服务器默认访问文件设置为/index.html。
(3)URL目录名也省略了。例如:http://www.glasscom.com,是由于服务器还可以设置默认访问文件。
(4)http://www.glasscom.com/dir,由于末尾没有“/”,但是不可以将dir直接理解为文件名,这时,服务器就会自行判断是目录名还是文件名,只要存在这个·名称即可。
2. HTTP的主要方法
- GET:获取URI指定的信息,指定什么就获取什么。
- POST:从客户端向服务器发送数据,一般用于发送表单中填写的数据等情况。
- HEAD:和GET基本相同,不过它只返回HTTP的消息头,并不返回数据的内容,用于获取文件最后更新时间等属性信息。
- OPTIONS:用于通知或查询通信选项
- PUT:替换URI指定服务器上的文件,如果URI指定的文件不存在,则创建该文件。
- DELETE:删除URI指定服务器上的文件。
- TRACE:将服务器收到的请求和头部信息直接返回给客户端,用于在使用代理的环境中检查改写请求的情况。
- CONNET:用于代理传输加密消息时使用的方法。
3.生成HTTP请求
- GET方法请求原理:客户端发起URL请求,Web服务器端接收到请求后,首先解析URL,获取URL所请求的文件内容,读取相应数据,将数据内容存储到响应信息,传给客户端。
- POST方法请求原理:URI会指向Web服务器中运行的一个应用程序的文件名,并将用户在输入框填写的数据信息传递给服务器,当Web服务器收到信息后,会将请求消息中的数据发送给URI指定的应用程序,最后Web服务器从应用程序接收输出的结果,将数据存放到响应消息中,返回给客户端。
4.HTTP状态码概要
状态码 | 含义 |
---|---|
1xx | 告知请求处理的进度和情况 |
2xx | 成功(200) |
3xx | 表示需要进一步操作(302重定向) |
4xx | 客户端错误 |
5xx | 服务器错误 |
400 | 发送请求有语法错误 |
401 | 访问页面没有授权 |
403 | 没有权限访问该页面 |
404 | 路径错误,没有该页面 |
500 | 服务器内部异常 |
504 | 服务器请求超时,没有返回结果 |
5.TCP/IP的基本思路
由一些小的子网,通过路由器连接起来组成一个大的网络。发送者发送的消息首先经过子网中的集线器,转发到距离最近的路由器上,路由器会消息的目的地判断下一个路由器的位置,然后发送到下一个路由器,过程不断重复到达目的地。
6.域名和IP为何并用?
用域名:域名可以自己定义,好记,IP是固定的。
用IP:计算机需要,所占字符小,方便路由器传输,域名太长,长度还不固定,处理起来比较麻烦,效率低。
并用:好记,传输快,需要用DNS服务器来通过IP查询名称。
7.DNS是如何解析的?
- 来自客户端查询消息有三种:域名、Class(用来识别网络信息,默认为IN,也只有IN)、记录类型(A为IP地址,MX为邮件地址)
- 该DNS服务器上有保存过该域名等,这时,DNS会从域名和IP地址的对照表中对比相应记录,并返回IP地址给客户端。
- 如果该DNS服务器没保存过此域名,这时,客户打端访问最近的一台服务器,根域向上查找,例如,要搜索www.test.qq.com的IP地址,首先,负责管理com的服务器找到管理qq的服务器,然后以此类推,顺藤摸瓜找到管理www的服务器,最后解析成功。
8.使用Socket库收发数据的操作?
(1)创建套接字(创建套接字阶段)
(2)将管道连接到服务器端的套接字上(连接阶段)
(3)收发数据(通信阶段)
(4)断开管道并删除套接字(断开连接)
以下为注意内容:
(1)网址不只是以http:、https:开头的,还有其他,类似ftp:(文件传输协议)、file:、mailto:(电子邮件地址)等,这些协议类型表示浏览器应当使用的访问方法。访问Web服务器时用http://,访问FTP服务器时用ftp://。URL中可能会包含用户名、密码服务器端口号等信息。URL的各种形式如下
eg:http://user:password@www.glasscom.com:80/dir/index.html
ftp://user:password@ftp.glasscom.com:80/dir/index.html
file://localhost/c:/path/file.zip
mailto:haimei.zhang@clouddeep.cn
news:comp.protocols.tcp-ip
(2)提交表单可以用get请求也可以用post请求,但是get方法只能够发送几百个字节,如果表单中数据超长,则必须使用post方法。
(3)尽管浏览器可以将URL解析并生成HTTP消息,但它本身并不具备将消息发送到网络的功能,需要委托操作系统来实现。(因为发送消息的功能对于所有应用程序都是通用的,这样比较合法)
(4)数据是以包的形式传递的。
(5)IP地址中的主机号部分为0(10.11.12.0),该地址表示的不是一台计算机而是整个子网;主机号部分为1(10.11.12.255),该地址表示对整个子网所有设备发包,即“广播”。
(6)xxx.xxx.xxx.xxx,每个xxx都是一个域,越往右域的级别越高。一台DNS服务器可以管理很多域,一个域只能在一台DNS服务器上。
(7)区分Socket、socket、套接字。Scoket表示库,socket表示程序组件的名称,套接字表示管道两端的接口。
(8)IP地址不是分配给每一台设备的,而是分配给设备中安装的网络硬件的。因此,如果一台设备有多个网络硬件,那就会有多个IP地址。