局域网(LAN):计算机数量多,通过交换机和路由器将计算机连接在一起,插入到一个路由器就是一个局域网,局域网内部的主机可以相互通信。
广域网(WAN):将相距更大的计算机连接到一起,可以看做比较大的局域网
协议:是一种约定,不同种类的主机和操作系统之间都能使用网络来通信,约定出一套统一的通信规则,称为协议。
1.OSI(参考模型)七层模型:
2.TCP/IP(分层模型)五层模型:
3.网络传输基本流程:协议分层之后,各层协议之间要进行分工协作,具体的协作靠封装和分用
4.应用层(包含很多协议):
(1)重点:HTTP协议(超文本传输协议)
HTTPS是基于HTTP来实现的,多了一个加密层
url:网址/链接
例:https://www.sogou.com(域名)/
例:http://123.207.58.25(IP地址)/admin(路径)
上述举例中IP地址不太方便记忆和传播,用一些更好记忆的字符串来表示,使用域名来表示。浏览器在访问域名的时候会自动把域名转换成IP地址
路径表示主机上的具体资源(文件或虚拟的文件)
查询字符串(query_String)中的键值对都是用户自定制协议的一部分
urlencode:query_string如果包含了一些特定的字符,都需要进行转义。转义方式:%[十六进制数字]
urldecode:是urlencode的逆过程
(2)HTTP协议格式:
HTTP请求格式(应用层请求数据包):
1.首行:(1)方法 GET(获取)/POST(发数据)/PUT
(放)/DELETE(删除)
(2)要访问的url
(3)版本号 HTTP/1.1 HTTP/2.0 HTTP/3.0
以上三个部分之间使用空格分割
2.协议头(header):(1)若干个键值对
(2)每个键值对占一行,每个键值对
之间使用:分割
3.空行:表示header到这里就结束了
4.协议正文(body):一般GET请求没有body,POST请求才有
HTTP响应格式:
1.首行:(1)版本号
(2)状态码
(3)状态码的描述信息
2.协议头(header):(1)任然是一组键值对
(2)每个键值对占一行
(3)每个键值对之间使用:分割
3.空行:表示header到这里就结束了
4.协议正文(body):响应中的正文格式也有很多种,比如可以是一个html,也可以是一个css,也可以是一个javascript,还可以是一个图片数据,还可以是一个json数据…
(3)常用的方法有哪些?***********
GET,POST,PUT,DELETE,HEAD,OPTION…
(4)GET和POST的区别是什么?***********
GET请求往往把自定制数据放在query_String中(url的键值对中)
POST请求往往把自定制数据放在body中
(5)常见的HTTP状态码有什么? *********
200 OK 表示访问成功
302 Found 表示重定向
303 See Other 表示重定向
404 Not Found 每找到指定资源
402 Forbidden 没有权限
502 Bad Gateway 表示服务器挂了
504 Gateway Timeout 表示服务器响应超时
418 I’m a teapot 没有什么作用
1xxx表示信息性状态码:接收的请求正在进行处理
2xxx表示访问成功:请求正常处理完毕
3xxx表示重定向:需要进行附加操作以完成请求
4xxx表示客户端出错:服务器无法处理请求
5xxx表示服务器出错:服务器处理请求出错
(6)常见的header有什么?
Content-Type:描述了body的数据格式类型
Content-Length:描述了body的数据长度
Host:描述了访问的主机名(域名/IP地址)
Referer:(HTTPS加密解决)表示当前页面是从哪个页面跳转过来的
Cookie:字符串,浏览器的本地存储的能力之一,其中经常会包含一种叫做"身份标识"的信息
session id
session是服务器端维护的一个数据结构,记录了用户的身份信息,session id就是session对象的唯一身份标识,session id保存在浏览器中,浏览器后续再访问服务器的时候,就会自动带着session id,从而让服务器知道当前请求是哪个用户发来的
服务器端使用一个hash table之类的结构,来维护若干个用户的身份信息,key就是session id,value就是完整的session对象
User-Agent: 声明用户的操作系统和浏览器版本信息