计算机网络
1.计算机网络分层
OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。
2.TCP和UDP区别
- 1.TCP是面向连接的,UDP是无连接的
- 2.TCP是可靠传输,UDP提供的是不可靠传输
- 3.TCP提供点对点的通信,UDP支持一对一,一对多,多对一,多对多的通信
- 4.TCP是面向字节流的,UDP是面向报文的。
- 5.TCP的首部开销大,UDP首部开销小。
- 6.TCP提供拥塞避免,UDP没有
3.TCP头部结构
4.IP头部结构
0 | 4 | 8 | 12 | 16 | 19 | 24 | 31 |
版本 | 首部长度 | 服务类型 | 长度 | ||||
认证 | 标志 | 段偏移量 | |||||
TTL | 协议 | 校验和 | |||||
源IP地址 | |||||||
目的IP地址 | |||||||
选项 ... |
5.TCP要三次握手、四次释放
三次握手的原因
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
四次挥手的原因
这个状态是为了让服务器端发送还未传送完毕的数据。
TIME_WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:
确保最后一个确认报文能够到达。
等待一段时间是为了让所有旧的报文从网络中消失。
6.TCP协议如何保证传输可靠性
- 校验和
- ***
- 确认应答
- 超时重传 ARQ协议
- 连接管理 三次握手、四次释放
- 流量控制:滑动窗口
- 拥塞控制:慢开始、拥塞避免、快重传、快恢复
7.DNS域名解析
1、找缓存
2、找本机的hosts文件
3、找DNS服务器
8.HTTP报文结构和状态码
常见状态代码 状态描述 说明
200 OK 客户端请求成功
302 Found 重定向,跳转的地址通过location指定。
304 Not Modified 服务端资源未更新。
401 Unauthorized 请求未经授权,需要进行身份验证。
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在,例如输入了错误的URL
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求
9.GET与POST比较:作用、参数、安全性、幂等性、可缓存
get把请求的数据放在url上,post把数据放在HTTP的包体内(requrest body)。
post比get更加安全。
get具有幂等性,post没有幂等性。
HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。
那么,post那么好为什么还用get?get效率高!
10.Cookie 作用、安全性问题、和 Session 的比较
Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,一般用于客户端,session一般用于服务器端。
Cookie 只能存储 ASCII 码字符串,而 Session 则可以存储任何类型的数据,因此在考虑数据复杂性时首选 Session;
Cookie 存储在浏览器中,容易被恶意查看。如果非要将一些隐私数据存在 Cookie 中,可以将 Cookie 值进行加密,然后在服务器进行解密;
对于大型网站,如果用户所有的信息都存储在 Session 中,那么开销是非常大的,因此不建议将所有的用户信息都存储到 Session 中。
11.长连接与短连接原理以及使用场景,流水线。
短链接:建立一次TCP链接,进行一次http通信。耗费资源但是安全。
长连接:建立一次TCP链接,进行多次http通信。不太安全但是节省资源。
权衡安全性和资源耗费性自然就有了他们各自的应用场景。
流水线:它是在同一条长连接上连续发出请求,而不用等待响应返回,这样可以减少延迟。
12.HTTP 存在的安全性问题,以及 HTTPs 的加密、认证和完整性保护作用
HTTP 有以下安全性问题:
使用明文进行通信,内容可能会被窃听;
不验证通信方的身份,通信方的身份有可能遭遇伪装;
无法证明报文的完整性,报文有可能遭篡改。
HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。
通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。
13.HTTP与FTP异同点
1. 同:
(1)都是应用层协议;
(2)都运行在TCP上,即都使用TCP(而不是UDP)作为其支撑的运输层协议。
2. 异:
(1)HTTP是超文本传输协议,是面向网页的;FTP是文件传输协议,是面向文件的。
(1)HTTP协议默认端口:80号端口。FTP协议默认端口:21号端口。
(3)FTP的控制信息是带外(out-of-band)传送的,而HTTP的控制信息是带内(in-band)传送的。
FTP使用两个并行的TCP连接来传输文件,一个是 控制连接(control connection),一个是 数据连接(data connection)。
控制连接用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“put”和“get”文件的命令。
数据连接用于实际传输一个文件。
因为FTP协议使用一个分离的控制连接,因此称FTP的控制信息是带外传送的。
而HTTP协议是在传输文件的TCP连接中发送请求和响应首部行的,因此其控制信息是带内传送的。
(4)FTP服务器必须在整个会话期间保留用户的状态(state)信息,而HTTP是无状态的。
FTP服务器必须把特定的用户账户与控制连接联系起来,随着用户在远程目录树上移动,服务器必须追踪用户在远程目录树上的当前位置。对每个活动着的用户会话的状态进行追踪,可以对FTP会话总数进行限制。
(5)FTP的控制连接是持久连接,数据连接是非持久连接;而HTTP既可以使用非持久连接,也可以使用持久连接,默认方式下,HTTP使用持久连接。
14.输入网址发生的事情
1.浏览器分析链接指向页面的URL
2.浏览器向DNS请求www.baidu.com的IP地址
3.域名解析系统解析出服务器的IP地址
4.浏览器与服务器建立TCP连接
5.浏览器发出命令
6.服务器响应
7释放tcp连接
15.集线器、交换机、路由器的作用,以及所属的网络层。
集线器:集线器工作在第一层(即物理层),它没有智能处理能力,对它来说,数据只是电流而已,当一个端口的电流传到集线器中时,它只是简单地将电流传送到其他端口,至于其他端口连接的计算机接收不接收这些数据,它就不管了。
交换机:交换机工作在第二层(即数据链路层),它要比集线器智能一些,对它来说,网络上的数据就是MAC地址的集合,它能分辨出帧中的源MAC地址和目的MAC地址,因此可以在任意两个端口间建立联系,但是交换机并不懂得IP地址,它只知道MAC地址。
路由器:路由器工作在第三层(即网络层),它比交换机还要“聪明”一些,它能理解数据中的IP地址,如果它接收到一个数据包,就检查其中的IP地址,如果目标地址是本地网络的就不理会,如果是其他网络的,就将数据包转发出本地网络。
16.TCP 拥塞控制的作用,理解具体原理。
作用:防止过多的数据注入到网络当中,这样可以使网络中的路由器或链路不致过载。
慢开始:由于不知道现在网络状态是什么样的,所以一下子不可以那么大,要慢慢的变大。
拥塞避免:当达到门限的时候,就会执行拥塞避免,因为网络流量已经达到了一定的速度,再增长过快,很容易出现拥塞,所以要放慢速度。
快重传:等待重传的ACK时间可能很长,造成很多空闲时刻的浪费,所以规定客户端如果一连收到三个重复的ACK,那么不必等待重传计时器到期,尽早重传未被确认的报文段。
快恢复:由于发送方现在认为网络很可能没有发生阻塞,因此现在不执行慢启动算法,而是把cwnd值设置为慢启动门限减半后的值,然后开始执行拥塞避免算法,拥塞窗口cwnd值线性增大。
上一篇: HTML的基本标签
下一篇: 设计模式详解|建造者模式