由于HTTP是应用层的协议,根据规定,只有底层协议建立之后才能进行更高层协议的链接。所以一个HTTP请求开始之前,浏览器需要与服务端建立链接,而该链接是通过TCP来完成的,该协议与IP协议共同构建Internet,即为TCP/IP协议族。但是,在我们浏览网页时,在浏览器的地址栏中通常显示的是易读易记的url地址,如www.jianshu.com,而这并不是上面所说的TCP/IP中的IP。所以在建立链接之前,一个网页的URL地址还先需要通过DNS转换为IP地址。
1、通过DNS将易读的URL转换为IP地址
2、建立TCP(/IP)链接
当TCP链接建立后,浏览器就会向服务器发送请求,这个请求一般是GET或者POST请求。GET和POST请求的格式如下:
1、请求行:
GET的请求行//get
GET 请求路径 HTTP/1.1
//post
POST 请求路径 HTTP/1.1
2、请求头:
请求头请求头以
key:value
的形式传递了各种信息。在POST请求中通常还会包括content-type:……
,用来描述消息体。
3、空行
这个……就是空行……
“咳,我请求头结束了。”
4、消息体
传输的内容
通常只有POST请求有消息体。
而GET与POST的跟本区别在于语义上的不同。GET用于获取资源(读),POST用于更新资源(写)。而且浏览器会在不同的使用场景使用不同的请求方式,如地址栏输入url、img、css等,会使用get请求,而from表单会使用post请求。当然也有一些其他方面的不同,如POST可以发送的内容更多,在某些情况下更加安全等。
3、发送一个GET或POST请求
服务器收到浏览器发来的请求后,进行相应的处理,而后服务器再向浏览器回送应答。其中就包含了协议版本号和答应状态码,如常见的200、304、404等。
如同浏览器发送的请求,服务器发送的回应也有应答头、和消息体。在发送完应答头后,用一个空行表示应答头结束,后面接着发送消息体。
4、服务器回送应答
一般情况下,一个请求和应答完成后,就要关闭TCP链接。
5、关闭链接
网友评论