一、计算机网络层次划分
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。
除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:

二、OSI七层网络模型对应协议

三、应用层
为操作系统或网络应用程序提供访问网络服务的接口。
会话层、表示层和应用层重点:
- 数据传输基本单位为:报文;
- 包含的主要协议:HTTP协议(Hyper Text Transfer Protocol)、DNS(域名解析协议)、FTP(文件传送协议)、Telnet(远程登录协议)、SMTP(邮件传送协议),POP3协议(邮局协议)。
【DNS协议】
DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,可以理解为域名转换成IP地址,能够使用户更加方便地访问互联网,而不用记住能够被机器直接读取的IP地址DNS运行在UDP上,使用端口号53。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。
【NAT协议】
NAT网络地址转换(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
【DHCP协议】
DHCP动态主机设置协议(Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
【HTTP协议】:
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
1. HTTP协议包含的请求
- GET:请求读取由URL所标志的信息。
- POST:给服务器提交数据。
- HEAD:请求读取由URL所标志的信息的首部。
- PUT:在给定的URL下存储一个文档。
- DELETE:删除给定的URL所标志的资源。
- CONNECT:用于代理服务器
- TRACE:用来进行环回测试的请求报文
2. GET请求与POST请求的区别
- 1)GET是从服务器上获取数据,POST是向服务器传送数据。
- 2)后退/刷新按钮,POST请求会重新提交,GET请求不会
- 3)GET请求可以被浏览器缓存,POST请求不会
- 4)参数方面:GET请求参数在URL中,长度和大小都有限制,且只允许ASCLL字符,POST请求参数在请求体中,没有任何限制
注:GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应 200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送 data,服务器响应200 OK(返回数据)。
注:对于安全而言,POST请求参数在请求体,相对于GET请求更安全;但是GET请求一般不应产生副作用,相当于数据库查询,不会修改,增加数据,不会影响资源的状态,相对于POST请求更安全
3. 请求报文
- 请求行:请求方法+URL+HTTP版本,如:GET /data/info.html HTTP/1.1
-
请求头:
请求头.png - 请求空行:它的作用是通过一个空行,告诉服务器请求头部到此为止。
-
请求体:
若方法字段是GET,则此项为空,没有数据。
若方法字段是POST,则通常来说此处放置的就是要提交的数据。
4. 响应报文
响应行:协议版本+状态码+原因描述,例如:HTTP/1.1 200 OK
-
响应头:
响应头.png 响应空行:它的作用是通过一个空行,告诉服务器请求头部到此为止。
响应体:服务器响应回来的数据,然后前台解析渲染显示。
5. 状态码
- 1XX:请求已收到继续处理(100:客户端应继续其请求;101:服务器切换协议)
- 2XX:成功响应(200:成功响应;206:部分响应)
- 3XX:资源重定向(301:永久重定向;302:部分重定向;304:响应缓存)
- 4XX:客户端请求出错(400:客户端语法错误;403:服务器拒绝请求;404:请求资源不存在)
-
5XX:服务器端出错(500:服务器内部错误)
HTTP状态码详细请参考:https://blog.csdn.net/sanwe3333/article/details/113564008
5. HTTP与HTTPS的区别
HTTP(HyperText Transfer Protocol:超文本传输协议):是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

6. HTTP请求和响应的过程(输入网址按下回车发生了什么?)
(1)域名解析
首先,浏览器会对URL地址进行解析,解析的过程如下:
1)浏览器缓存:首先在浏览器的DNS缓存中查找域名对应的IP地址;
2)系统缓存:如果浏览器没有找到需要的IP地址,则浏览器会做一个系统调用,在用户的主机的DNS中查找;
3)路由器缓存:如果用户主机中也没有找到需要的IP地址,会向路由器发送请求,在路由器的DNS中查找;
4)ISP缓存:如果以上的所有DNS中都没有找到,则会在ISP(互联网服务供应商)的DNS缓存中查找
5)根域名:根据13个根域名服务器递归搜索 ,直至找到域名对应的IP地址。
6)建立连接:找到对应IP地址后通过TCP的三次握手建立连接,然后发送HTTP请求
7)解析渲染:服务器出来处理请求并将结果返回给浏览器,浏览器根据返回结果进行解析和页面渲染。
(2)释放连接
HTTP1.0:非持久连接,即请求响应后立即断开;
HTTP1.1:持久连接,响应成功后仍然在一段时间内保持这条连接。
7. cookie、token、session的区别
优先级: cookie < session < token
安全性:
【Cookie】:
①Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,考虑到安全应当使用Session;
②HTTP是一种无状态协议,服务器没有办法单单从网络连接上面知道访问者的身份,为了解决这个问题,就诞生了Cookie,Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用Response向客户端浏览器颁发一个Cookie,客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
【Session】:
①Session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie;
②关闭浏览器不会关闭Session,它具失效日期,失效后服务器认为客户端停止了活动,并删除Session以节省空间。
【Token】::
①作为身份认证 Token安全性比Session好,因为每个请求都有签名还能防止监听以及重放攻击;
②Oauth token提供的是认证和授权,认证针对用户,授权针对app;
③Token的生成一般是采用uuid保证唯一性,当用户登录时为其生成唯一的Token,存储一般保存在数据库中。Token过期时间采用把Token二次保存在Cookie或Session里面,根据Cookie和Session的过期时间去维护Token的过期时间;
四、会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
五、表示层
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
五、传输层(Transport Layer)
第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。 有关网络层的重点:
- 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
- 包含的主要协议:
TCP协议(Transmission Control Protocol,传输控制协议)
UDP协议(User Datagram Protocol,用户数据报协议); - 重要设备:网关。
1. TCP对应的协议:
FTP:定义了文件传输协议,使用21端口。
Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
SMTP:邮件传送协议,用于发送邮件。服务器开放的端口是25。
POP3:它是和SMTP对应,POP3用于接收邮件,使用110端口。
HTTP:是从Web服务器传输超文本到本地浏览器的传送协议,默认端口:80。
2. UDP对应的协议:
DNS:用于域名解析服务,将域名地址转换为IP地址,使用53端口。
SNMP:简单网络管理协议,使用161端口,是用来管理网络设备的,由于网络设备很多,无连接的服务就体现出其优势。
TFTP(Trival File Transfer Protocal):简单文件传输协议,使用69端口。
DHCP:动态主机设置协议的简称,主要有两个用途:用于内部网或网络服务供应商自动分配IP地址;给用户用于内部网管理员作为对所有计算机作中央管理的手段。67端口(服务器端)用来接收,68端口(客户端)用来发送。
3. TCP与UDP的区别


