HTTP协议

来源:互联网 发布:up to u网络天什么意思 编辑:程序博客网 时间:2024/06/10 03:13

MAC地址:在设备与设备之间数据通信时用来标记收发双方(网卡的序列号)
IP地址:在逻辑上标记一台电脑,用来指引数据包的收发方向(相当于电脑的序列号)
网络掩码:用来区分ip地址的网络号和主机号
默认网关:当需要发送的数据包的目的ip不在本网段内时,就会发送给默认的一台电脑,成为网关
集线器:已过时,用来连接多态电脑,缺点:每次收发数据都进行广播,网络会变的拥堵
交换机:集线器的升级版,有学习功能知道需要发送给哪台设备,根据需要进行单播、广播
路由器:连接多个不同的网段,让他们之间可以进行收发数据,每次收到数据后,ip不变,但是MAC地址会变化
DNS:根据域名用来解析出IP(类似电话簿)
http服务器:提供浏览器能够访问到的数据

NAT(网路地址转换器)
1 当在家里用宽带链接上网时,会把电话线(今天很多地方都是光纤)—->调制解调制(简称猫)——->电脑等设备
2 电脑会得到来自电信服务商的一个公网ip地址(切记只有公网ip地址才能上网),此时可以直接上网happy…

3 为了能够让多台设备都可以上网,需要将数据进行“分流” 电话线(今天很多地方都是光纤)---->调制解调制(简称猫)------->路由器------>电脑等设备4 此时路由器的一端有一个公网ip地址,剩下的4个(路由器型号不同个数不同)可以接入电脑等设备 并且 它们的ip是私有ip(例如 192.168.1.2)5 当一个电脑(192.168.1.2)上网时,先通过DNS协议解析出某个域名对应的ip,然后发送数据时,在经过路由器时转换为公网ip以及路由器自己分配的临时端口192.168.1.2:6789----->192.168.1.1 路由器 116.226.52.212:6539------->猫---->万维网6 接收数据时,在经过路由器时转换为路由器之前记录的ip以及port万维网------->猫----->116.226.52.212:6539 路由器 192.168.1.1 ---->192.168.1.2:6789

HTTP协议简介
超文本传输协议(HyperText Transfer Protocol)是一种应用层协议。
HTTP是万维网的数据通信的基础。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以:
HTML是一种用来定义网页的文本,会HTML,就可以编写网页;
HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。

浏览器请求
最主要的头两行分析如下,第一行:

GET / HTTP/1.1GET表示一个读取请求,将从服务器获得网页数据,/表示URL的路径,URL总是以/开头,/就表示首页,最后的HTTP/1.1指示采用的HTTP协议版本是1.1从第二行开始,每一行都类似于Xxx: abcdefg:Host: www.sina.com表示请求的域名是www.sina.com

服务器响应
HTTP响应分为Header和Body两部分(Body是可选项)
Header中响应行
HTTP/1.1 200 OK
200表示一个成功的响应,后面的OK是说明。

Content-Type: text/htmlContent-Type指示响应的内容,这里是text/html表示HTML网页。    请注意,浏览器就是依靠Content-Type来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是http://www.baidu.com/meinv.jpg,它也不一定就是图片。

HTTP格式
每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的。
HTTP协议是一种文本协议,所以,它的格式也非常简单。

HTTP GET请求的格式:

GET /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3

每个Header一行一个,换行符是\r\n。

HTTP POST请求的格式:

POST /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3body data goes here...

每一行换行符是\r\n
当遇到连续两个\r\n时,Header部分结束,后面的数据全部是Body。

HTTP响应的格式:

200 OK HTTP/1.1Header1: Value1Header2: Value2Header3: Value3body data goes here...

每一行换行符是\r\n

HTTP响应如果包含body,也是通过\r\n\r\n来分隔的。

请再次注意,Body的数据类型由Content-Type头来确定,如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。
原创粉丝点击