一、计算机网络的7层模型
1)应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
2)各层简述
应用层:主要是终端的应用,比如说QQ、浏览器、FTP(文件下载)等。
表示层:将计算机能够识别的东西转化成人能够识别的东西(图片、声音等)。主要对数据进行解释、压缩和解压缩。
会话层:通过传输层建立起数据传输通路。在系统之间发起会话或者接收会话请求。
传输层:定义传输数据的端口和协议,比如TCP、UDP协议。将下层到达的数据进行分段和传输,到达目的后再进行重组。(传输的是段)
网络层:选择合适的网间路由和交换节点,主要设备是路由器。将下层到达的数据进行IP地址的封装和解封装。(传输的是报)
数据链路层:将物理层到达的数据进行MAC地址的封装与解封装。主要设备是交换机和网卡。(传输的是帧)
物理层:定义物理设备的标准。比如网卡的接口类型,传输介质的传输速率等等。传输的是比特流。
二、传输层的TCP\UDP协议
1)TCP和UDP的区别
1.1TCP是面向连接,UDP无连接的
1.2 TCP是可靠的,UDP是不可靠的
1.3 TCP是面向字节流的,UDP是面向报文的
1.4 TCP是支持点对点通信,UDP是点对点,一对一、一对多、多对多的通信
1.5 TCP的首部开销(20字节)比UDP的首部开销(8字节)大
1.6TCP有流量控制,UDP没有流量控制
3)为何要三次握手,不是两次
目的:防止已失效的连接请求又传到服务器端造成错误。
原因:若服务端在没有确定 客户端 是否对自己做出正确应答的情况下就建立连接,如果客服端的 请求报文 因意外没有及时送达,如果服务器收到该请求时,以为客户端要建立连接,就立刻进入Establish状态,服务器端一直等待客户端的数据传送,造成资源的浪费。
4)TCP的四次挥手
3.1)客户端将‘关闭连接字段’FIN置为1,发送服务器端,用来关闭客户端到服务器端之间的数据传送,客户端自己进入FIN_Wait_1状态;
3.2)服务器端收到消息后,通过FIN字段知道客服端要断开与服务器端之间的连接,发送应答ACK给客户端,同时确认号为收到序号+1,服务器端进入Close_Wait状态,此时客户端不能给服务器端发送数据,但是服务器端可以向客户端发送数据,客户端要接收;
3.3)服务器端将‘关闭连接字段FIN’置为1,发送给客户端,用来断开服务器端到客户端之间的数据传送,服务端进入Last_ACK状态
3.4)客户端收到后,客户端自己进入Time_Wait状态,将应答ACK发送给服务器端,确认号为收到序号+1,服务器收到后进入Close状态,完成四次挥手。
5)为何是四次挥手
前两次挥手断开一个方向的连接,后两次挥手断开另一个方向的连接
6)Time_Wait的意义,为和要等待2MSL
主动关闭端 在TIME_Wait后,等待两倍的Msl时间进入Close状态,主要是保证服务器端能够收到客户端的确认应答;如果客户端发送完应答后直接进入Close状态,如果应答丢失,服务器端会超时请求重传 连接释放请求,但是此时客户端已经关闭了,那么服务器端就没法收到正确的应答,无法关闭服务器。
7)TCP协议如何保证传输的可靠性
主要是通过 数据包校验、应答机制、超时重发、数据包的失序重排、丢失重复的数据、流量控制等实现。
数据包校验就是: 检测数据在传输过程中是否发生变化,如果校验包出错,那么接收方丢弃报文段并且不给出应答(响应),那么发送方就会超时重传。
超时重传:当TCP发出一个段时,会启动一个定时器,如果在一定的时间内没有收到应答,那么就会重新发送这个报文段。
确认应答:TCp的一端发出报文段,另一端收到后给出应答响应。
失序重排:TCp的报文段作为IP 的数据报传输,IP的数据报达到可能是失序的,因此TCP 的报文段到达也可能是失序的,因此TCP会对失序的报文段进行一个重新的排序
丢弃重复的数据:当接收方收到重复的报文段的时候对其进行丢弃
流量机制:TCP连接的每一端各有一个固定大小的缓冲空间,接收方只允许发送方发送它的缓冲区所能接纳的数据。这是防止较快的主机使较慢的主机缓冲区溢出。TCP的流量控制是通过可变大小的滑动窗口协议来实现的。
8)流量控制和拥塞控制区别
8.1)流量控制就是端到端的控制,一端数据发送太快,另一端来不及接收
8.2)拥塞控制是全局性的,是一端到另一端的网络因为堵塞而导致传输速率过慢或者丢包现象。涉及到所有的主机、路由器及降低网络性能的所有因素。(网络中对某一资源的需求超过了它提供的可用部分,造成了网络性能过慢)
9)拥塞控制的解决办法
拥塞控制:就是防止过多的数据注入到网络中,这样使网络中的路由器或者链路不至于过载
控制有四种方式是:
9.1)慢开始、拥塞避免、快启动和快重传
慢开始:因为一开始不知道网络的拥塞程度,所以一开始不会发送大量的数据,而是从小到大的增加拥塞窗口的大小
拥塞避免:拥塞窗口的大小成线性增长,每经过一个往返RTT时间,拥塞窗口的大小加1
快重传:接收方收到一个失序的报文段后,立刻向发送方 发送重复确认,不用等待自己发送数据时捎带确认;发送方一连收到三个这样的确认重传之后,就会向接收方发送一个 尚未收到的报文段,不用等待重传计时器的时间的到期
快恢复算法:快重传配合使用的还有快恢复算法,当接收方一连收到三个 重复确认的时候,将门限值减半,但是接下来并不执行慢开始算法,因为如果网络拥塞的化就不会连续收到三个 重复确认,拥塞窗口的大小为门限值,然后执行拥塞避免算法。
10)从输入网址URL到获得页面的整个过程
10.1)浏览器查询DNS服务器,获取域名对应的IP地址;搜过过程是–先搜索浏览器本身的DNS缓存–》搜索操作系统的DNS缓存–》读取本地的host文件–》查询本地的DNS服务器;在查询本地的DNS服务器的时候,先看域名是否存在本地 配置 区域资源中,如果存在,返回完成域名解析;若不存在,看DNs服务器是否缓存了该网址的映射关系,,那么调用IP地址映射,完成于域名解析。如果不存在的化,要根据相应的设置完成递归查询或者迭代查询。
10.2)浏览器获得域名对应的IP地址后,浏览器向服务器发起建立连接请求,发起TCP的三次握手
10.3)TCP/IP连接建立起来后,浏览器向服务器发起HTTP请求
10.4)服务器收到请求后,根据路径参数映射到特定的处理机进行处理,将处理结果和相应的视图返回给浏览器
10.5)浏览器解析并且渲染视图,如果遇到js等静态资源的引用,则重复以上的步骤,继续向服务器请求资源
10.6)浏览器根据请求到的资源和数据进行渲染页面,最终向用户呈现一个完整的页面
注意:输入URL但是没有到指定的网址,是什么原因呢
1)网络断开
2)DNS解析出错**(无法解析)**
3)网页被劫持
4)后台页面加载不出来
5)供应商网络出口出现问题
6)服务器负载过大
注意:DNS(域名解析系统)
将域名转为IP地址的协议,也可以将IP地址转为域名
三 Http和Https
1)Http和Https
1.1)Http是超文本传输协议,是明文传输;Https是具有安全性的SSL的加密传输协议。Https是共享密钥加密和公开密钥加密的混合加密机制。
1.2)http和Https的连接方式不同,端口也不一样,http是80,https端口是443
1.3)https加载时间变长,增加功耗;SSL证书要钱,流量成本变高;
2)Http网站服务器和浏览器的通信方式
Http网站浏览器和服务器之间的通信方式是通过对称加密算法实现的。为了让不同的浏览器和服务器有不同的对称加密算法,浏览器和服务器首先要进行协商,他们协商的过程是通过非对称加密算法进行的。非对称加密的公钥发送给浏览器,服务器保留私钥。为了防止在传输过程中公钥被黑客篡改,采用数字证书的方式进行传输公钥, 浏览器对公钥进行解密,核对数字证书是否被修改,确保其安全性。
2.1)对称加密和非对称加密
对称加密是加密和解密是同一把公钥,存在的问题是如何安全的把密钥发送给对方。
非对称加密 是公钥和私钥。公钥可以随意发布,自己保留私钥。发送密文的一方用公钥进行加密,接收密文的一方用私钥进行解密。
常见的对称加密算法:DES(数据加密标准),AES(高级加密标准),3DES等等。
常见的非对称加密算法:RSA(公钥加密算法),ECC(椭圆曲线加解密)。
3)HTTP的状态码
1**:信息提示,继续,请请求者继续执行操作;
2**:成功,操作被成功接收并处理;
3**:重定位,需要进一步操作已完成请求;
4**:客服端发生错误,请求有语法错误或者无法请求完成;
5**:服务器发生错误,服务器在处理请求的过程中发生了错误。
具体指令:
100 :信息提示,请请求者继续执行操作;
200:请求成功;
301:(网页)资源被转移到其他的URL之中 302:暂时重定向 304:已缓存
400:Bad Request,请求有语法错误 403:已禁用 404:(网页)资源不存在
500:内部服务器发生错误 503:服务器不可用,稍等
4)HTTP的请求方法有哪些
总共有8种,分别是:
4.1)OPTIONS
返回服务器针对特定资源所支持的HTTP的请求方法
4.2)HEAD
向服务器索取和get请求相一致的响应,只不过响应体不会被返回,返回的是响应小消息头的元信息
4.3)get
请求服务器的资源
4.4)POST
更新服务器上资源
4.5)put
向指定资源上传最新的内容
4.6)delete
请求服务器删除request-url所标识的资源
4.7)trace
回显服务器的收到的请求,主要用于测试和诊断
4.8)connect
预留给能够将连接改为管道方式的代理服务器
注意:http的请求方法是区分大小写的,如果某个请求的资源不支持所在对应的请求方法,服务器返回405 (Method not allowed);如果服务器不认识或者不支持该请求方法,返回 503 (Not Implement);
5)请求方法get和post的区别
5.1)功能:get是请求服务器的数据,post是更新服务器的数据;
5.2)get请求的数据在URL之后,Post请求的数据在HTTP请求包的包体之中
5.3)安全性:(post的安全性比get高)get 请求的用户密码直接暴漏在url上
5.4)输出数据的大小:get,受特定浏览器和服务器限制,一般为2k,post不受限制
5.5)数据包的个数
get产生一个TCP数据包,post产生两个数据包
get请求方法:浏览器发送header和data,服务器响应200
post:浏览器先发送header,服务器响应100;浏览器再发送data,服务器响应200
6)HTTP的请求报文
由请求行、请求头、空行和请求数据组成
请求行由请求方法、URL和HTT协议版本
请求头是通知服务器关于客户端的信息:以键值对的方式存储
User-Agent: 产生请求的浏览器的类型
Accpet:浏览器(客户端)可识别的内容类型列表
Host:请求的主机名
7)HTTP的响应报文
http响应报文由响应行,响应头,响应体三部分组成。
响应行主要包括
响应协议,这个与请求协议对应,比如http,
状态码200
状态码的描述OK
响应头就是一些常见的响应名对应的响应值
响应参数就是我们真正需要的从数据库中取出的数据
三、Cookie和Session
1)含义
1.1)Cookie和Session是客户端和服务器之间保持状态的解决方案,Cookie是客户端保持状态的解决方案,Session是服务器端保持状态的解决方案。
1.2)Cookie机制。cookie是一小段的文本信息。客户端请求服务器,如果服务器需要记录****该用户的状态,将通过response向客户端颁发一小段cookie.客户端浏览器将这个cookie保存起来,如果客户端再请求该网址时,连通这个cookie一起发送给服务器,服务器收到后,根据cooike来辨认用户的状态,服务器还可以根据需要cookie的内容。
1.3)Session机制。客户端请求服务器,服务器保存用户的状态,通过session来保存。如果服务器已经为这个客户端保存过session,就通过session id 将这个 检索出来;如果客户端请求不包括session id,就为这个客户端重新创建一个session,并在本次响应过程中,将session id发送给客户端,客户端收到后,可以通过cookie机制保存起来。这样在交互的过程中,客户端就可以自动地按照规则将session id发送给服务器,如果浏览器禁用cookie,可以通过URL重写机制将session id发送给服务器。
2)区别:
1.1)依赖性: session的实现依赖于cookie机制,通过cookie将session id 发给服务器
1.2)大小限制。cookie的大小有限制,并且浏览器对每个的站点的cookie的个数也有限制;session大小不受限制,只有服务器的内存有关
1.3)安全性 cookie在客户端,可以通过拦截或者本地文件找到cookie进行攻击,Session在服务器端相对比较安全
1.4)服务器资源的消耗。session在服务器上过一段时间消失,session过多会增加服务器的压力。
3)Socket通信,如何区别不同应用进程之间的网络通信
主要有三个参数:通信的目的IP地址、使用的传输层协议(TCP/UDP)和端口号,socket将这三个参数绑定起来,通过应用层和传输层之间的套接字接口(socket),来区分。
新增
1)HTTP的短连接和长连接
在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
HTTP1.1规定了默认保持长连接(也为持久连接),数据传输完成了,但是TCP连接不断开,等待在同域名下继续用这个通道传输数据;相反的就是短连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。