HTTP
HTTP为超文本传输协议(Hyper Text Transfer Protocol)
基于TCP和IP,它规定请求怎么写,回复怎么回复。
请求
- 请求动词 路径加查询参数 协议名/版本
- HOST 域名或IP
- Accept:text/html
- Content-Type:请求体的格式
- 回车
- 请求体(上传内容)
三部分:请求行,请求头,请求体 请求动词有GET/POST/PUT/PATCH/DELETE等 请求体在GET请求中一般为空
响应
- 协议名/版本 状态码 状态字符串
- Content-Type:响应体的格式
- 回车
- 响应体(下载内容)
url会被curl重写,多了/是表示根目录,先请求DNS获得IP地址。进行TCP连接,TCP连接成功后,开始发送HTTP请求,请求内容,相应内容,相应结束后,关闭TCP连接,真正结束。
IP
IP为网际互连协议(Internet Protocol)
主要作用是
- 定位一台设备
- 封装数据报文,以跟其他设备交流
特殊的IP地址:
- 127.0.0.1 表示自己
- localhost通过hosts(路径为自己设备的C:\Windows\System32\drivers\etc)指定为自己
- 0.0.0.0不表示任何设备
TCP端口 port
一台机器可以提供很对服务,,每个服务一个号码,这个号码就叫端口号port
- 要提供HTTP服务最好使用80端口
- 要提供HTTPS服务最好使用443端口
- 要提供FTP服务最好使用21端口
- 一共有65535个端口
端口使用规则
- 0到1023号端口是留给系统使用的
- 你只有有了管理员权限之后,才能使用这1024个端口
- 其他端口可以给普通用户使用
- 比如http-server默认使用8080端口
- 如果一个端口已经被占用了,只能换一个端口
IP和端口缺一不可
域名
域名(Domain Name)是由一串字符组成的,域名指向某一个IP地址。它是对IP的别称,方便我们记住难记住的IP
- 一个域名可以对应多个IP,这个叫做均衡负载
- 一个IP可以对应不同域名,这个叫共享主机
如何将域名和IP对应起来?
DNS
DNS是(Domain Name System)的缩写,它会根据域名查出对应的IP地址,它像是一个电话本一样。DNS是将域名映射到相应IP地址的服务。可以尝试nslookup baidu.com,查看百度对应的IP
com是顶级域名,baidu.com是二级域名(俗称是一级域名),www.baidu.com 是三级域名(俗称二级域名),www是主机名,对应着一种服务,baidu.com下有多个服务器,不同的服务器可以提供不同的服务。它们是父子关系。
URL组成
URL学习 简单总结
URL统一资源定位符(Uniform Resource Locator)包含协议,域名和IP,端口号,路径,查询信息和锚点。路径作用是请求不同的页面。查询信息的作用是同一页面加上查询参数展示不同内容。锚点的作用是同一页面,定位不同的内容。
注意:锚点看起来有中文,实际上不支持中文,锚点是无法在Network面板上看到的,因为锚点不会传给服务器
在浏览器中输入baidu.com,你的浏览器会向电信/联通提供的DNS服务器询问baidu.com对应什么IP,DNS服务器会回答一个IP,然后浏览器会向对应的IP地址的80/443端口发送请求,请求内容是查看baidu.com的首页。那为什么是80/443端口呢?因为服务器默认用80提供HTTP服务,默认用443提供HTTPS服务。
输入URL之后发生了什么
- DNS 解析:将域名解析成 IP 地址
- TCP 连接:TCP 三次握手
- 发送 HTTP 请求
- 服务器处理请求并返回 HTTP 报文
- 浏览器解析渲染页面
- 断开连接:TCP 四次挥手