zoukankan      html  css  js  c++  java
  • 计算机网络面试常考知识点

    1.五层协议

      应用层:为特定应用程序提供数据传输服务,例如HTTP、DNS等,数据单位为报文。(报文是网络中交换与传输的数据单元,即站点一次性要发送的数据块,报文包含了将要发送的完整的数据信息,长短很不一致,长度不限且可变)

    运输层:提供的是进程间的通用数据传输服务,由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:1.传输控制协议TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段2.用户数据报协议UDP,提供无连接,尽最大努力的数据传输服务,数据单位为用户数据报。TCP主要提供完整性服务,UDP主要提供及时性服务。

    网络层:为主机间提供数据传输服务,而运输层协议是为主机中的进程提供服务,网络层把运输层传递下来的报文段或者用户数据报封装成分组

    数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供服务。数据链路层把网络层传下来的分组封装成

    物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

    2.OSI(七层协议)

      多了表示层和会话层。五层协议中将表示层和会话层的功能留给应用程序开发者处理。七层协议从高到低依次为:应用层,表示层,会话层,运输层,网络层,数据链路层,物理层。

    表示层:数据压缩、加密、以及数据描述,这使得应用程序不必担心在各台主机中数据内部格式不同的问题。

    会话层:建立及管理会话

    3.TCP/IP

      它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层,TCP/IP体系结构不严格遵循OSI分层概念,应用层可能会直接使用IP层或者网络接口层。

                                                                                                        

    TCP/IP协议是一种沙漏形状,IP协议在其中占有举足轻重的地位。

                                                                               

    4.数据在各层之间的传递过程

      在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要运输层和应用层。

                                                                                        

    5.重要协议

      UDP和TCP的特点:用户数据报协议UDP是无连接的,尽最大可能传输,没有拥堵控制,面向报文(对用应用程序传下来的报文不合并也不拆分,只是添加UDP首部),支持一对一,一对多,多对一,多对多的交互通信。传输控制协议TCP是面向连接的,提供可靠传输,有流量和拥堵控制,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条TCP连接只能是一对一的。

    UDP首部格式:首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。

                                                                                     

    TCP首部格式:序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
    确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
    数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
    确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
    同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。
    终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。
    窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。

                                                                        

    TCP的三次握手:

                                                                                 

    假设A为客户端,B为服务器端。首先B处于LISTEN(监听)状态,等待客户的连接请求。

    1.A向B发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号x。

    2.B收到连接请求报文,如果同意连接,则向A发送连接确认报文,SYN=1,ACK=1,确认号为x+1,同时也选择一个初始的序号y。

    3.A收到B的连接确认报文后,还要向B发出确认,确认号为y+1,序号为x+1。

    4.B收到A的确认后,连接建立。

    三次握手的原因

    第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接

    客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间后,就会重新请求连接。但这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就无法再次打开连接。

    TCP的四次挥手:

                                                                              

    以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单,并且不讨论ACK,因为ACK在连接建立后都为1。

    1.A发送连接释放报文,FIN=1。

    2.B收到之后发送确认,此时TCP属于半关闭状态,B能向A发送数据,但是A不能向B发送数据。

    3.当B不再需要连接时,发送连接释放报文,FIN=1。

    4.A收到后发出确认,进入TIME-WAIT状态,等待2MSL(最大报文存活时间)后释放连接。

    5.B收到A的确认后释放连接。

    四次挥手的原因:

    客户端发送了FIN连接释放报文之后,服务器收到了这个报文,就进入了CLOSE-WAIT状态,这个状态是为了让服务器发送还未传送完毕的数据,传送完毕后,服务器会发送FIN连接释放报文。

    TIME-WAIT:客户端收到服务器端的FIN报文后进入此状态,此时并不是直接进入CLOSED状态,还需要等待一个时间计时器设置的时间2MSL,这么做有两个理由:1.确保最后一个确认报文能够到达,如果B没收到A发送来的确认报文,则会重新发送连接释放请求报文,A等待一段时间就是为了处理这种情况的发生。2.等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一次新连接不会出现旧的连接请求报文。

    TCP可靠传输:TCP的传输时可靠的,主要靠以下四种机制:

    1.字节编号机制,TCP 数据段以字节为单位对数据段中的“数据”部分进行一一编号,确保每个字节的数据都可以有序传送和接受。

    2.数据段确认机制,TCP要求每接受一个数据段都必须由接收端向发送端返回一个确认数据段,其中的确认号表明接收端已正确接受的数据段序号(确认号前面的所有数据段,确认号表示将要接收的下一个数据段编号)

    3.超时重传机制,在TCP中有一个重传定时器,在发送一个数据段的同时也启动了该定时器,如果在定时器过期之前该数据还没有被对方确认的话,且定时器停止,然后重传对应序号的数据段。

    4.选择性确认机制,在该机制下,仅可以重传缺少部分的数据,而不会重传那些已经正确接受的数据段。

    6.应用层

      具体信息见图:

                                                                                  

    7.web页面请求过程

    1.DHCP配置主机信息:假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取。
    主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口 68 的 UDP 报文段中。
    该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 数据报中。
    该数据报则被放置在 MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。
    连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。
    该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。
    主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。

     2.ARP解析MAC地址:主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。
    主机生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。
    该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中。
    该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。
    DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。
    主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP 查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。
    网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC 地址,发回给主机。

    3.DNS解析域名:知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。
    网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。
    因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。
    到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。
    找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。

    4.HTTP请求页面:有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。
    在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。
    HTTP 服务器收到该报文段之后,生成 TCP SYN ACK 报文段,发回给主机。
    连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。
    HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。
    浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。

     

      

  • 相关阅读:
    *Basic Calculator
    今天周末20190616,分享句喜欢的话,常用架构图
    Python 面向对象 --- 类和对象
    Python 面向对象(OOP)基本概念
    Python 高级变量类型 --- 函数的进阶
    Python 高级变量类型 --- 变量进级
    Python 高级变量类型 --- 综合应用
    Python 高级变量类型 --- 公共方法
    Python 高级变量类型 --- 字典
    Python 高级变量类型 --- 元组
  • 原文地址:https://www.cnblogs.com/1996yrb/p/12483069.html
Copyright © 2011-2022 走看看