20170204 解析http(4)

http(维基百科)hypertext transfer protocol 超文本传输协议

  • 服务器:可以是电脑 也可以是程序(你访问IP,我给你提供页面。运行JS文件,就是个程序)

  • IP和网址的关系,中间会有DNS(ping 域名。显示该域名的IP,百度买了很多服务器,根据你的位置返回最近的IP)

  • DNS:网域名称系统,是一个分布式数据库(DNS 服务器IP是由运营商告诉你你的IP是多少,然后你的路由器会显示)

  • 结构:

网址 IP
baidu.com 111.11.11
googe.com 222.22.22

(一个域名可以对应多个IP。每个用户在访问的时候对应的IP都不一致,一般是地理位置最近的IP)
总结两句话:
1、一个域名对应的IP由所有者指定的
2、由所有者决定域名对应的IP,不在本机(也就是你迁的电信网,就由电信运营商决定)

PS:
强制改IP
1、Linux: sudo vi /etc/hosts/ 127.0.0.1 baidu.com
2、Windows - 用管理员账号打开citbash

-notepad 或者记事本打开 hosts文件(c/windows/system32/dvivers/etc/hosts)改IP
-在gitbash试或者打开网页试

  • 端口(TCP/UDP协议) 一个端口对应一个服务

1、FTP(传文件。默认端口21)监听21

2、http 80端口

3、DNS 53端口

4、HTTPS 443端口

5、1080 socks代理端口

PS:
*0-1023 都是保留端口,只能管理员身份运行
端口范围 0--65535 2的16次方
sudo以管理员身份运行 *

请求&&响应

  • 浏览器(发出请求)--------------服务器(响应请求,返回页面给浏览器)
    client sever
    浏览器也叫客户端、用户代理(user agent,因为是浏览器代替我上网)
一个请求包含哪些内容

curl -L https://baidu.com

curl -l http://101.200.33.143:8888/index.html

1、请求行:动词 get 路径 协议/版本号
get/ index.html http1.1.1
get head post put(给什么替换掉要改的) pacth(保留旧的) delete connect option trace
2、请求头:域名(host)
host:1.2.3.4
accept:HTML、XHTML、XML
user-agent:chrome、Mac、
第四部分内容格式:json/HTML/urlencoded(第二部分指定第四部分格式)content-type:application x/www-form-urlencoded(x表示这个东西还没进入标准,但试行了很多年了)
3、回车
4、消息体(内容随意,可省略)
难点:cookie

一个请求的例子:

get/index.html http/1.1(我要index.html,遵循的版本是http1.1)
host:101.200.33.143:9999(我需要百度的这个IP访问9999端口号)
connection:keep-alive
pragma:no-cache(不要缓存我)
upgrade-insecure-requests:1
user-agent:mogilla/5.0(macintosh;intel mac os x 10_12_3) applewebkit/537.36(khtml,like gecko)
chrome/56.0.2924.87 safari/537.36(用户用什么工具访问)
accept:text/html,application/xhtml+xml;application/xml0.9,image/webp,
/*;q=0.8(返回HTML,如果没有就XHTML)
accept-encoding;gzip,defiate,sdch *

响应
  • 得到响应头(1 2部分)curl --head http://101.200.33.143:8888/index.html
  • 得到第四部分 curl http://101.200.33.143:8888/index.html
  • 得到头和体 curl -D - http://101.200.33.143:8888/index.html
    1、状态行(F12 network respose)
    协议/版本号 状态码 状态描述
    2、响应头
    content--type:text/HTML charset =utf-8
    server:bfe/1.0.8.18
    date:thu,23 feb 2017
    (定义第四部分格式)
    3、回车
    4、消息体(内容随便)

    难点:缓存
一个响应的例子:

HTTP/1.1 200 OK(版本号、状态码)
Server: bfe/1.0.8.18
Date: Tue, 28 Feb 2017 06:28:27 GMT
Content-Type: text/html; charset=utf-8(定义第四部分类型)
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: BDRCVFR[yRSRXBz7w1T]=-tUPB7bzJE6uZNBmi4WUvY; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1464_21081_22036; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Cache-Control: private
Cxy_all: 56060048_4_pg+64bff61a52fe2c37f37a88f72cfc6228
Expires: Tue, 28 Feb 2017 06:28:02 GMT
X-Powered-By: HPHP
X-UA-Compatible: IE=Edge,chrome=1
Strict-Transport-Security: max-age=172800
BDPAGETYPE: 1
BDQID: 0xf209092c000026f8
BDUSERID: 0
Content-Encoding: gzip
Set-Cookie: __bsi=2050419762638780962_00_21_R_N_3_0303_C02F_N_I_I_0; expires=Tue, 28-Feb-17 06:28:32 GMT; domain=www.baidu.com; path=/

  • 状态码:
    200:成功 301:重新定向;永久搬家 302:临时搬家
    304:指缓冲的版本已经被更新并且客户端应刷新文档
    404:请求网址不存在 403:不允许你访问
    405:只能用特定方式请求,如只能用get
    414:请求的网址太长
    505:内部服务器错误 502:网关问题

你可能感兴趣的:(20170204 解析http(4))