各种博客整理和自己总结
计算机网络
网络概述
网络七层模型
你知道TCP协议、IP协议、HTTP协议分别在哪一层吗?
传输层、网络层、应用层
运输层
补充
UDP的优点:
- 在发生之前不需要建立连接,也不需要释放连接
- 不会有拥塞控制,即使发生拥塞,还是会按照之前的频率发送
- 面向报文,不会对报文进行分段,如果报文过长,在IP层就会进行分段,降低效率‘如果报文过短,IP的首部会过长,传输效率也会降低
- 是无连接的,会尽自己最大努力交付
- 存在一对一,一对多,多对多
TCP的优点
- 会建立安全的连接
- 全双工通道,即双方的应用进程在任何时候都是可以发送数据的
- 面向字节流,只保证接收方和发送方的字节流完全一样
- 只存在一对一
TCP协议
请你说明一下,TCP协议的3次握手。
序列号seq:tcp为自己的连接上的所有数据都会有一个编号,第一个字节的编号时本地随机产生的,给字节编好后就给每一个报文指定一个序号,序列号seq就是每个报文段中的第一个数据字节的序号
确认号ack:期望收到下一个报文段的第一个编号,即当前报文段的最后一个编号+1
- 此时主机1想请求建立连接即SYN=1,产生随机序列号seq=x
- 主机2收到请求,接受连接SYN=1,ACK=1,确认主机1ack=x+1,产生自己的序列号seq=y
- 主机1,确认ACK=1,以及检查ack是否匹配,正确,发送ACK=1,ack=y+1,以及自己的序列号seq=x+1
补充
为什么建立连接是3次,而关闭连接是4次?
因为在建立连接时,当主机a发出请求,主机b可以同步应答(SYN+ACK)建立连接;但是在关闭连接时,当主机a主动关闭连接,虽然主机b同意但此时不会立即关闭,因为b或许还么有把报文发送完,因此要等一会才能给主机a回复,所以会比建立连接多一次
四次挥手
- 客户端主动关闭连接发送FIN=1和自己的序列号seq=u
- 服务端收到请求,发送ACK=1,ack=u+1,以及自己的seq=v,但此时服务器不会立即关闭会先完成自己还未发送完的报文,因此此时客户端没有数据发送,但是服务端若还未完,还可以向客户端发送数据,客户端还要接受,此时就是关闭等待时间,还要持续一会
- 当服务端数据发送完,会发生FIN=1,ACK=1,ack=u+1,seq=w,即此时服务端也结束了,客户端不要等待了
- 客户端发送ACK=1,ack=w+1,seq=u+1
谈一下,为什么tcp为什么要建立连接?
因为tcp是安全连接
请你解释一下TCP为什么可靠一些
- 累积确认,在TCP中,确认的是下一个报文的第一个数据字节的序号,如果没有收到确认,会将自己重传队列中的副本报文进行发送;延迟确认,一般在收到报文后,会等待一段时间,如果此时还有新的报文会继续接受,如果想发送报文,可以通过发送确认信息,将想要发送的报文捎带过去,可以提高传输效率;如果收到重复报文或者错误报文会选择丢弃,如果是收到未按序号的报文会暂存,将待所缺序号收集完毕,再一起向应用层传输;每次发送一个报文,会设置一个计数器,如果计数器时间到了,但还没有收到确认信息,会将此报文进行重传
- 以字节为单位的滑动窗口,滑动窗口可以用来保证传输的数据都是已被确认的,如果未被确认,到达窗口顶值,就不能发送了
- 超时重传,
- 快速重传,当接受方一连收到三个重复确认后,就可以知道此时也许发送网络拥塞
- 选择确认,对未按序到达的字节块,以免出现超时重传,可以使用选择确认,告知发送方已经收到了
- 三次握手
- 超时重发
- 滑动窗口
- 拥塞控制
请说明一下哪种应用场景会使用TCP协议,使用它的意义
因为tcp是一中安全的连接,所以当对网络质量有较高要求时
网络基础
简单描述一下,TCP的连接和释放过程。
三次握手和四次挥手
网络层
ARP协议
请简单解释一下,arp协议和arp攻击。
arp协议又称地址解析协议,是ip地址对物理地址的映射
流程
- 会先在主机的高速缓存中查找对应ip地址主机的物理地址,如果没有【可能是新加的主机;或者本机刚刚加电,还未有任何其他主机的信息】
- 会在本局域网内发送一个广播的分组请求“我的ip地址是aaa,物理地址是bbb,我想知道ip地址为ccc的的主机的物理地址”
- 本局域网上的所有主机允许的arp进程都会收到这个arp分组请求
- 主机b看到自己的ip地址,会发出响应“我是IP地址为ccc的主机,我的物理地址是ddd”
- 主机a收到响应后,就会将主机bip地址到物理地址的映射写入到arp告诉缓存中,在上述主机a发出请求分组时,会将自己的ip地址到物理地址的映射写入其中,当主机b收到请求,也会将a的映射写入到自己的高速缓存中
arp的请求分组是在数据链路层的广播,但arp的响应分组是普通的数据链路层的单播
ARP协议基本没有对网络的安全性做任何思考,当时人们考虑的重点是如何保证网络通信能够正确和快速的完成——ARP协议工作的前提是默认了其所在的网络是一个善良的网络,
arp攻击也就是所谓的arp欺骗,因为arp中应答的ip地址和物理地址是可以伪造的,
此时主机a发送请求,主机c伪装成主机b应答,但当下次如果主机a收到了来自主机b的应答,此时欺骗会失败,但是主机b如果发送大量伪造报文,同时欺骗主机a和b,那么就可以监控二者之间的信息,还可以阻断通信…
ARP攻击之所以能够产生,就是因为伪造了对ARP广播的应答,而路由器会起到隔离广播域的作用,因此arp的攻击只能在局域网中产生
ICMP协议
什么是icmp协议,它的作用是什么?
网际控制报文协议,主要分为ICMP差错报告报文和ICMP查询报文
路由器
请你讲一下路由器和交换机的区别?
-
路由器
- 作用在网络层
- 智能的路由选择,隔离广播域
- 不是即插即用,会分配ip地址
- 适合于上千台的大网络
-
交换机
- 作用在数据链路层
- 即插即用,并且具有相对较高的分组过滤和转发速度(只用处理通过第二层传输过滤的数据)
- 对广播风暴不提供任何保护措施
- 适合于几百台的小网络
应用层
http
请解释一下,http请求中的304状态码的含义
为修改,即自从上次请求后,请求的网页未被修改。服务器可以告诉浏览器自从上次抓取后网页没有变更,进而节省带宽和开销。
请你讲讲http1.1和1.0的区别
- http1.1
- 可以建立长连接即persistent connection,在同一个http连接中,可以传送多个http请求和响应,多个请求和响应也可以重叠,也可以同时进行
- 是持续的流水线的连接,即可以一个接着一个的发送请求,服务器会一个接着一个的响应
- http1.0
- 只会建立短暂的连接,即非持续连接,在每次请求完成之后,连接会中断
HTTP加密协议
请你说明一下,SSL四次握手的过程
SSL(安全套接字层)和TLS(传输层安全)是属于应用层和传输层之间的,为TCP建立安全连接的,主要为应用层的HTTP协议提供,比如当我们要进行密码支付的时候,HTTP会变成HTTPS
http协议
请谈一下,你知道的http请求,并说明应答码502和504的区别
-
HTTP的操作过程
-
http1.0是非持续连接;http1.1是持续流水线的连接
-
http的报文格式(面向文本);请求行/状态行,首部,实体
-
状态码;1xx通知信息的;2xx成功收到消息;3xx重定向;4xx客户错误;5xx服务器错误
502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
请说明一下http和https的区别
- https是一种安全的连接可以用来完成在线支付等一系列保密性的工作,
- 是密文传输;
- 端口443
- http
- 是明文传输;
- 端口80
请讲一下浏览器从接收到一个URL,到最后展示出页面,经历了哪些过程。
http请求的流程:(以URL为例)
- 点击超链接,实际是一个URL地址
- 浏览器请求DNS解析这个URL的ip地址
- DNS解析出ip地址166.111.4.100
- 浏览器与服务器建立tcp连接(在服务器端IP为166.111.4.100,端口为80)
- 浏览器发出取文件,get
- 服务器www.tsinghua.edu.cn给出响应,把文件index.html返回给浏览器
- 释放tcp连接
- 浏览器显示index.html
DNS
请你谈谈DNS的寻址过程。
主机采用递归查询,本地域名解析服务器采用迭代查询
- 本机先在高速缓存中查找网址关系映射,如果有,则解析,如果没有
- 则会向本地域名解析服务器(迭代查询)查找,如果有,则解析,如果没有则会告知本地域名解析服务器,根域名服务器的ip地址
- 会向根域名服务器查找…
- 会向顶级域名服务器查找…
- 会先权威域名服务器查找,会告知查询主机的ip地址
- 本地域名服务器会把最后的查询结果告知给主机
反向代理
请你简单讲解一下,负载均衡反向代理模式的优点、缺点
反向代理:是指用一个服务器来接受internet的连接,再将这些请求转发给内部网络上服务器,最后通过这个服务器将结果返回给客户端,
负载均衡:通过反向代理,将请求转发给内部网络上的服务器已达到负载均衡
优点:我们只能感知是一个服务器帮我们处理请求
缺点:当在并发的情况下是,代理服务器需分别对外对内打开,并且自己本身的的请求数量也会非常大,此时代理服务器有可能会成