面试笔记--计算机网络

#面试笔记

计算机网络

路由器转发规则,一些常见的概念。tcp的三次握手四次挥手的过程,tcp和udp的区别,应用层的常见协议,http协议,长连接短连接,常见端口号

GET和POST的本质区别

从输入地址到服务器响应的过程

TCP拥塞机制

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。
拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。

慢开始与拥塞避免

慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。

IP地址

链路层的转换

HTTP的原理

HTTP工作过程

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。下图表明了这种请求/响应模型。

HTTP工作原理

以下是HTTP请求/响应的步骤:
(1)客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。
(2)发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
(3)服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
(4)释放连接TCP连接
Web服务器主动关闭TCP套接字,释放TCP连接;客户端被动关闭TCP套接字,释放TCP连接。
(5)客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

HTTP协议

基于TCP协议的应用层协议
HTTP是一个普通用在浏览器和web服务器之间进行数据交换的文本协议
HTTP协议的ETAG响应头主要用于信息的过期验证

HTML错误代码
(1) 常见代码:
200服务器成功返回了网页,成功处理了请求
304未修改,自从上次请求后,请求的页面未被修改过,此时服务器不会返回网页内容,节省带宽和开销
404请求的网页不存在
500服务器内部错误
503服务器暂时不可用(超载、停机维护),通常只是暂时状态

(2) 1xx:临时响应,服务器端响应成功,等待请求者进一步操作
(3) 2xx:响应成功
202接受请求,未处理
204处理了请求,但没有返回任何内容
(4) 3xx重定向,要完成响应,服务器需要进一步处理
301网页已被永久移动到新位置
302临时移动到新位置
305要求只能使用代理才能访问
(5) 4xx请求错误
400不理解请求语法
401要求身份验证,先登陆才能请求
403禁止访问,服务器拒绝请求
405请求中的方法被禁用
408请求超时
(6) 5xx服务器在处理请求时内部发生错误,来自服务器本身的错误
501服务器不具备完成该请求的功能
502服务器作为网关或代理,从上游服务器收到无效响应
504网关超时
505 HTTP版本不支持

TCP/IP与UDP

  • TCP面向连接、可靠的数据传输,有拥塞控制和流量控制,大量数据,速度慢
  • UDP非连接,不可靠的数据传输,少量数据,速度快

TCP建立连接的三次握手

详细过程和状态变化
为什么要三次?

TCP关闭连接的四次挥手

FIN–>
<--finack ßfin finack-->

如何提高UDP的可靠性

应用层实现超时重传,客户端发送一个包,服务器返回一个包表示收到,如果客户端超过一定时间没有收到该包,就需要重传

SOCKET编程

1

当recv函数在接受数据时是阻塞的,当返回值<0,说明连接出错

当返回值=0,表示对端关闭了连接

返回值>0,接受到的数据的大小

TCP/IP分层,各层作用

应用层:为操作系统、应用程序提供访问网络的接口(Telnet、FTP、HTTP、SNMP、DNS域名解析)
表示层)
(会话层)
传输层:两点之间的根据使用的协议(TCP、UDP),传输相应数据报文,
网络层:整个网络的传输路径选择,路由(IP、RIP)
网络访问层:数据链路层、物理层的结合,数据链路层相邻节点之间数据帧传输,物理层就是光纤上比特级的数据传输。

PING操作的原理

使用ICMP,在IP主机、路由器之间传递控制消息

各层协议

网络层的协议

IP协议: 根据IP地址决定转发、路由的协议
ICMP:本质理解为带差错报告的IP协议,在主机和路由器之间传递控制信息(网络通不通,主机可不可达,路由可不可达到)
ARP:将IP地址转化为MAC地址
RARP:物理地址转为IP地址
RIP

传输层的协议

TCP
UDP
SPX

应用层协议

HTTP
SMTP:简单邮件传输协议
DNS:
Telnet
FTP:文件传输协议
WWW:
NFS: 网络文件系统

DNS的完整流程(域名->IP地址)

DNS采用分布式的域名系统,减少故障发生
当一个应用需要把主机名解析为IP地址时,该应用程序就会调用解析程序,把待解析的域名放在DNS请求报文中,以UDP数据报方式发送给本地域名服务器,本地服务器在查找域名后,把对应的IP地址放在回答报文中返回,应用程序获得目的主机的IP地址后即可进行通信。若本地域名服务器不能解析该域名,则向上级域名服务器继续发送查询请求,直到可以解析为止。
2

HTTP1.0/1.1区别

HTTP1.1中才有cache-control响应头,主要用于控制信息在浏览器的缓存

  1. HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求
    缺陷:访问一个包含有许多图像的网页文件的整个过程包含了多次请求和响应,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个文档和图像,器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能

  2. HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟
    HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果
    HTTP 1.1还提供了Host、身份认证、状态管理和Cache缓存等机制相关的请求头和响应头

SYN攻击

SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从上图可看到,服务器接收到连接请求(syn=j),将此信息加入未连接队列,并发送请求包给客户(syn=k,ack=j+1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。