前言
- 本笔记参考视频,李立超:BV1qN4y1A7jM p17-p19
基础知识
- https://baidu.com/xxx/xxx
- 协议名:https
- 域名 domain:ip地址别名,baidu.com
- /xxx/xxx:网络资源路径
在浏览器中输入网址后发生了什么
- DNS解析,获取网站的ip地址
- 浏览器与服务器建立TCP/IP连接,三次握手
- 向服务器发送请求,http协议
- 服务器处理请求,并返回响应,http协议
- 浏览器渲染响应的页面
- 断开连接,四次挥手
DNS解析过程
先缓存,再host,再本地DNS,本地DNS请求根服务器获得顶级域名服务器地址,本地DNS请求顶级域名服务器获得nameserver服务器地址,本地DNS请求nameserver服务器获得正确ip和到期时间,本地DNS缓存映射后发给用户。
TCP/IP建立连接和断开过程
-
又名客户端与服务器如何建立和断开连接
-
三次握手(连接)与四次挥手(断开)
-
TCP报文头部结构:
几个重要的字段- 序号,seq:指的是本报文段所发送的数据的第一个字节的序号
- 确认号,ack:是期望收到对方下一个报文段的第一个数据字节的序号
- 控制位,确认ACK:0/1,1时有效,在连接建立后所有的传送的报文段都必须把ACK置为1。
- 控制位,同步SYN:在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1,因此SYN置为1就表示这是一个连接请求或连接接受报文。
- 控制位,结束FIN:用来释放一个连接。当FIN=1时,表明此报文段的发送发的数据已发送完毕,并要求释放运输连接。
-
三次握手:1.客户端 向 服务器 发送连接请求;2.服务器收到请求,向客户端返回消息;3.客户端 向 服务器 发送同意连接信息
-
四次挥手(断开):1.A向B说发完了,请求断开;2.B向A说知道了;3.B向A说收完了,可以断开;4. A向B说知道了
网络模型
- OSI七层模型
- TCP/IP体系结构,四层模型
- 教科书中的五层模型
向服务器发送http请求,服务器响应请求
-
服务器主要功能,接收请求报文,发送响应报文
-
http协议属于 TCP/IP 协议族,属于应用层,
-
http规定了,发送请求(request)和响应请求(response)时,通信的报文格式
-
http协议不安全,明文发送;https相对安全,加了个套接字
-
请求报文(request):客户端发给服务器的报文
-
请求报文格式:
-
请求首行
GET /index.html?name=xxxx HTTP/1.1
第一部分 GET 表示请求方式,请求方式常用的有get请求和post请求
- GET请求主要用来向服务器 请求 资源
- POST请求主要用来向服务器 发送 数据
第二部分 /index.html?name=xxxx,表示请求资源的路径,问号后的为查询字符串
- 查询字符串为名值对结构,多个名值对直接使用&连接
- GET请求通过查询字符串的方式将数据发送给服务器,安全性较差,且长度有限制(浏览器有限制,HTTP无限制)
- POST通过请求体来发送数据,即GET请求无请求体,POST请求有请求体,无法在地址栏直接查看,可在浏览器载荷中查看,大小无限制
- 能用POST尽量使用POST
第三部分 HTTP/1.1,表示协议版本
-
请求头
名值对结构,给服务器传递信息,需要了解的:
Accept:浏览器可以接受的文件类型
Accept-Encoding:浏览器允许的压缩编码
Accept-Language:浏览器可以接受的语言
User-Agent:用户代理,用来描述浏览器信息的字符串,浏览器类型、内核 -
空行
-
请求体
GET请求无请求体,POST请求有请求体
-
-
响应报文格式:
-
响应首行
HTTP/1.1 200 OK
第一部分 HTTP/1.1,表示协议版本
第二部分 200,表示响应状态码,响应状态码规则- 1xx,请求处理中
- 2xx,表示成功
- 3xx,表示请求重定向
- 4xx,表示客户端错误,如404
- 5xx,表示服务器错误
第三部分 OK,对响应状态码的描述
-
响应头
名值对结构,给浏览器传递信息,需要了解的:
Content-Type:描述响应体的类型
Content-Length:描述响应体的大小 -
空行
-
响应体
服务器返回的信息,GET请求无响应体,POST请求有响应体
-