互联网面试知识点总结(三)- 计算机网络篇
- ******************************* 概 述 *******************************
- 一. OSI七层模型及其包含协议
- 二. 列举各个层使用的是哪个数据交换设备
- ******************************* 链路层 *******************************
- 一. 链路层工作流程
- 二. 链路层三个基本问题
- 三. CSMA/CD协议工作流程
- ******************************* 网络层 *******************************
- 一. IP地址分类
- 二. ARP协议工作过程
- 三. IP数据报格式
- 四. IP分组转发算法
- 六. CIDR路由器聚合
- 七. ICMP协议
- 八. IPV4和IPV6的区别
- 九. 单播、广播和多播区别
- 十. IP地址和MAC地址的区别
- ******************************* 运输层 *******************************
- 一. TCP和UDP区别
- 二. TCP首部字段
- 三. TCP选项字段
- 四. 为什么要规定一个最大报文段长度MSS
- 五. TCP如何保证可靠性
- 六. TCP流量控制
- 七. 糊涂窗口综合征
- 八. 拥塞控制和流量控制的区别
- 九. TCP拥塞控制
- 十. TCP建立连接的三次握手
- 十一. TCP断开连接的四次握手
- 十二. 为什么建立连接要进行三次握手
- 十三. 为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态
- 十四.
- 十五. 如果已经建立了连接,但是客户端突然出现故障了怎么办
- 十六. TCP短连接和长连接的区别
- 十七. TCP粘包、拆包及解决办法
- 十八. 提高网络利用率办法
- ******************************* 应用层 *******************************
- 一. HTTP协议特性
- 二. HTTP的请求报文和响应报文
- 三. HTTP协议请求方法
- 四. get和post区别
- 五. HTTP首部字段
- 六. HTTP协议返回码
- 七. HTTP和HTTPS协议的区别
- 八. HTTP/1.0和HTTP/1.1的区别
- 九. HTTP/1.1和HTTP/2.0的区别
- 十. HTTP/2.0和HTTP/3.0的区别
- 十一. 浏览器输入URL会发生什么
- 十二. DCHP动态主机配置协议工作流程
- 十三. cookie和session区别
- 十四. DNS解析过程
- 十五. URI和URL
- 十六. 代理服务器
- ****************************** 网络安全 ******************************
- 一. 对称加密和非对称加密的区别
- 二. 报文鉴定码MAC
- 三. 数字签名流程
- 四. 数字证书
- 五. SSL加密过程
- **************************** Socket编程 ****************************
- 一. SYN攻击及解决办法
- 二. TIME_WAIT 过多的危害及优化方式
******************************* 概 述 *******************************
一. OSI七层模型及其包含协议
- 应用层:通过应用进程间的交互来完成特定的网络应用,应用层协议定义进程间通信和交互的规则,主要协议有HTTP、SMTP、DNS、DHCP协议等
- 表示层:对数据进行翻译、加密和压缩,主要包括协议有JPEG、ASII
- 会话层:建立管理和终止会话,主要包括协议有RPC、NFS
- 运输层:负责向两台主机中进程之间的通信提供通用的数据传输服务,主要协议有TCP、UDP协议
- 网络层:负责为分组交换网上的不同主机提供通信服务,主要协议有IP、ARP、ICMP协议
- 链路层:将网络层交付下来的数据报组装成帧,在两个相邻节点间的链路上进行传递,主要协议有CSMA、VLAN协议
- 物理层:通过媒介传输比特,确定机械以及电气规范,主要包括协议有IEEE802.3,CLOCK,RJ45
二. 列举各个层使用的是哪个数据交换设备
- 网关:应用层(网关又叫协议转换器,是一种复杂的网络连接设备,可以支持不同协议之间的转换,实现不同协议网络之间的互连)
- 路由器:网络层(路由选择、存储转发)
- 交换机:数据链路层(识别数据包中的 MAC 地址信息,根据 MAC 地址进行转发,并将这些 MAC 地址与对应的端口记录在自己内部的一个地址表中)
- 网桥:数据链路层(将两个 LAN 连起来,根据 MAC 地址来转发帧)
- 集线器:物理层(纯硬件设备,主要用来连接计算机等网络终端)
******************************* 链路层 *******************************
一. 链路层工作流程
- 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
- 结点A把封装好的帧发送给结点B的数据链路层
- 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧
二. 链路层三个基本问题
- 封装成帧
在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束,首部和尾部的作用是进行帧定界(即确定帧的界限 - 透明传输
由于帧的开始和结束的标记使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。为了解决透明传输问题,就必须设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”,而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符 - 差错检测
对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议(例如,运输层的TCP协议)来完成
对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务
三. CSMA/CD协议工作流程
- 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道
- 检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔,给接收端流出缓冲时间),就发送这个帧
- 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
① 发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做,然后回到步骤1
② 发送失败:在争用期内检测到碰撞。这时立即停止发送数据,。适配器接着就执行指数退避算法,等待 r 倍512比特时间后,返回到步骤2,继续检测信道。但若重传达16次仍不能成功,则停止重传而向上报错
******************************* 网络层 *******************************
一. IP地址分类
- A类、B类和C类地址的网络号字段分别为1个、2个和3个字节长,而在网络号字段的最前面有1~3位的类别位,其数值分别规定为0,10和110
- A类、B类和C类地址的主机号字段分别为3个、2个和1个字节长
- D类地址(前4位是1110)用于多播(一对多通信)。我们将在4.6节讨论IP多播
- E类地址(前4位是1111)保留为以后用
- 特殊IP地址
二. ARP协议工作过程
ARP协议是解决了同一局域网上主机或者路由器的IP地址和硬件地址之间的映射
- 源主机和目的主机在同一局域网
• 源主机先会查看自己的ARP高速缓存中是否有目的IP地址的MAC地址记录
• 如果源主机的高速缓存中有目的IP地址的记录,则直接通过这个MAC地址进行数据的传输
• 如果源主机的高速缓存中没有目的IP地址的记录,则会向局域网的所有主机广播一个ARP请求,寻找目的IP地址的MAC地址
• 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和mac地址写入到ARP列表中,如果以存在,则覆盖然后将自己的mac地址写入arp响应包中,告诉源主机自己是它想要找的mac地址
• 源主机收到ARP响应包后,将目的主机的IP和mac地址写入ARP列表,并利用此信息发送数据 - 源主机和目的主机不在同一个局域网
• 源主机主机先通过广播一个ARP请求,找到本网络中的一个路由器的MAC地址,然后将数据包直接给路由器
• 当路由收到数据包后,如果目的IP地址在子网络中的话,这时通过ARP找到目的主机MAC地址,然后把数据包给目的主机。
• 如果目的主机不和源主机发送数据的路由器在同一网络内的话,则路由器会通过ARP协议找到下一跳的路由器,然后把数据包发送到该路由上,以此类推
三. IP数据报格式
- 版本:占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4)
- 首部长度:占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节) 因此 IP 的首部长度的最大值是 60 字节
- 区分服务:占 8 位,用来获得更好的服务 在旧标准中叫做服务类型,但实际上一直未被使用过
- 总长度——占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节, 总长度必须不超过最大传送单元 MTU
- 标识:占 16 位, 它是一个计数器,用来产生数据报的标识
- 标志:占 3 位,标志字段的最低位是 MF,MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。 标志字段中间的一位是 DF,只有当 DF = 0 时才允许分片
- 片偏移:占13 位,指出较长的分组在分片后某片在原分组中的相对位置,片偏移以 8 个字节为偏移单位
- 生存时间:占8为,记为 TTL,数据报在网络中可通过的路由器数的最大值
- 协议:占8位,字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程,TCP对应6,UDP对应17
- 首部检验和:占16位,字段只检验数据报的首部不检验数据部分
四. IP分组转发算法
- 从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
- 若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址)
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行4
- 若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6
- 报告转发分组出错
六. CIDR路由器聚合
- 消除传统的A,B,C地址和划分子网的概念,更有效的分配IPv4的地址空间,CIDR使IP地址又回无分类的两级编码
- 构成超网:将网络前缀缩短,网络前缀越短,其地址块所包含的地址数就越多,路由聚合有利于减少路由之间的路由选择信息交换,从而提升了整个因特网性能
七. ICMP协议
为了更有效地转发IP数据报和提高交付成功的机会,ICMP协议允许主机或路由器报告差错情况和提供有关异常情况的报告
- ICMP差错报告报文
• 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文
• 超时:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文
• 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
• 改变路由(重定向) :路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由) - 不发送ICMP差错报告报文的几种情况
• 对ICMP差错报告报文,不再发送ICMP差错报告报文
• 对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
• 对具有多播地址的数据报,都不发送ICMP差错报告报文
• 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报 - ICMP询问报文有两种
• 回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文,这种询问报文用来测试目的站是否可达以及了解其有关状态
• 时间戳请求和回答:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间,时间戳请求与回答可用于时钟同步和时间测量 - ICMP应用
• PING:通过发送回送请求报文来检测源主机到目的主机的链路是否有问题,目的地是否可达,以及通信的延迟情况
• traceroute:通过发送探测报文来获取链路地址信息,即源主机可获得到目的地的每一跳路由的IP地址
八. IPV4和IPV6的区别
- 首部长度
IPv4首部的选项字段允许IP首部被扩展,由此导致数据报首部长度可变,IPv6采用固定40字节长度的报头长度(称基本报头),IPv6的扩展首部放在了数据部分,路由器无权处理,从而加快了路由器的处理效率 - 分片/重组
IPv6的分片与重组只能在源与目的地上执行,不允许在中间路由器进行将该功能从路由器转移到端系统,大大加快了网络中的IP转发速率。如果路由器收到IPv6数据报太大而不能转发到出链路上,则该路由器丢弃该包,并向发送发发回一个"分组太大"的ICMP差错报文,于是发送发使用较小长度的IP数据报重发数据。 - 首部校验和
IPv6不进行首部校验和检查,从而更快速处理IP分组 - 优先级:IPv6标识数据报的优先级
- 协议:IPv6使用新版ICMP协议
发布评论