【计算机网络】

(5条消息) 校招面试之计算机网络高频面试题_MiracleWK的博客-优快云博客_计算机网络校招题

/四层五层/七层协议

  • OSI参考模型(七层模型)
img
  • 五层模型(重要)

    img

    其中各层负责的工作如下:

    • 应用层:负责实现一切与应用程序相关的功能
    • 传输层:提供端到端可靠的传输服务,拥塞控制和流量控制,保证进程之间的通信
    • 网络层:数据的路由与转发(整个数据转发路径的选择,下一个站点该到哪),通信子网的拥塞控制,保证主机到主机的通信
    • 数据链路层:负责相邻结点(网卡之间)之间的数据传输,提供差错控制,数据校验,流量控制,可靠传输
    • 物理层:传输比特流,定义物理设备的标准
  • TCP/IP模型(四层)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bB46uu0I-1645181957449)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220207121950902.png)]

DHCP

应用层协议,用于主机动态获取IP地址,基于UDP协议

步骤

  1. 广播DHCP发现报文,目的是发现DHCP服务器(源地址0.0.0.0,目的地址 255.255.255.255,端口67,UDP)
  2. 所有DHCP服务器收到发现报文后,都会广播一个DHCP提供报文(目的地址255.255.255.255,因为客户端此时没有IP地址)
  3. 客户端选择一个DHCP服务器,发送DHCP请求报文
  4. 服务器返回一个DHCP ACK报文(携带一个分配给客户机的IP地址)

DNS

应用层协议,将域名解析为IP地址,基于UDP

  1. 浏览器解析地址,抽出主机名(例如,www.google.com),操作系统会先检查自己本地的hosts文件是否有对应映射关系,如果有,就先调用这个IP地址映射,完成域名解析,没有进入下一部

    hosts文件位于系统盘C:\Windows\System32\drivers\etc中,hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”

  2. 浏览器将地址发送给本机运行的DNS客户端,DNS客户端检查缓存,有映射关系返回,没有进入下一步

  3. 本机DNS向对应的本地DNS服务器发送请求(目的端口号53),本地DNS服务器查看本地数据库,有则返回,没有下一步

  4. 本地DNS服务器向所有根DNS服务器发送请求,根DNS服务器查看域名的顶级域部分,然后查看本地数据库告诉本地DNS服务器应该去哪个顶级域DNS服务器去查询

  5. 本地DNS服务器根据顶级域DNS服务器返回的根DNS服务器地址,发送请求过去,随后根DNS服务器查看IP地址,返回报文指出应该去哪个权威DNS服务器查询

  6. 本地DNS服务器权威DNS服务器发送请求报文,权威DNS服务器必然可以解析出IP地址,然后返回给本地DNS服务器

  7. 本地DNS服务器将域名(主机名)与IP地址映射关系存入本地DNS缓存,然后返回给请求域名解析服务的用户主机

  8. 用户主机将域名(主机名)与IP地址映射关系存入本地DNS缓存,然后使用该IP地址

一次DNS解析过程,至多只需要发送8个UDP报文即可完成查询,总结如下图:

preview

DNS解析服务可以分为递归查询迭代查询,主机向本地服务器发出的查询是递归查询,本地DNS服务器随后进行的查询是迭代查询

DNS完整解析过程示意图

img

TCP三次握手四次挥手

TCP/UDP协议区别

  • 报文格式

    ​ UDP不保证可靠传输,UDP报文首部仅含有源/目的IP地址,报文长度和校验和等简单数据

    • TCP

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RvjtDMC9-1645181957452)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220207154247199.png)]

    • UDP

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RExrou15-1645181957454)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220207154300938.png)]

  • 报文段长度

    • TCP将应用层交付的报文视为无结构的字节流,因此传输数据是分段传送,通过序号来确定顺序
    • UDP面向报文,将应用层交付的报文添加首部后直接交付网络层
  • TCP面向连接/UDP无连接

  • TCP提供可靠的数据传输,UDP尽量交付数据

ARP

地址解析协议(ARP,Address Resolution Protocol)

是一个跨越链路层和网络层的协议,ARP分组同时携带链路层地址和网络层地址,是两层沟通的"桥梁";

其特点是请求广播,回答单播

  • 检查本地的ARP表,是否存在目的IP地址到目的MAC地址的映射,没有进入下一步
  • 发送方构建ARP分组,包含目的MAC地址FF-FF-FF-FF-FF-FF(广播地址)和目的IP地址,发送给子网所有适配器,子网适配器检查自己的IP地址发是否符合目的IP地址,符合的那个适配器发送回答的ARP分组,告知自己的MAC地址,子网没有满足的IP地址则进入下一步(说明目的主机在其它子网中)
  • 子网内没有主机回答,则直接去获取子网路由器对应接口的MAC地址,返回给需要的主机

HTTP

(5条消息) HTTP请求、响应报文格式_怀揣梦想,努力前行-优快云博客_响应报文格式

img

  • 请求行

    • 请求方法,url,协议和协议版本号
  • 请求头

    一些key-value,记录一些属性(cookie就是在请求头中)

  • 请求正文

    • GET请求没有正文
    • POST请求会将一些数据上传数据(比如图片)放在正文中

    下面为响应报文

    img

  • 响应行

    • 协议,版本号
    • 状态码及其简单的描述
  • 响应头

    • 一些服务器的基本信息(KEY-VALUE)
  • 响应体

  • GET和POST区别

    • GET的请求参数在url中,POST的请求参数在请求正文里
  • HTTP和HTTPS区别

    • 端口不同
    • HTTP明文传输安全性较低,HTTPS基于SSL进行加密
  • SSL协议(HTTPS安全性保障)

cookie

  • 为什么要有cookie?

    HTTP协议本身是无状态的(即:通过HTTP协议无法判断客户身份,比如是否访问过本站点,访问过服务器端哪些站点),这种设计的目的是为了简化Web服务器的设计,解决这种无状态问题所使用的技术就是cookie技术

  • cookie怎么传输?

    在请求头或者响应头中,以文本的形式传输,本身记录的是key-value信息及相关属性,占用请求头或响应头一行

  • cookie原理

    1. 客户端第一次访问服务器端,服务器端发送一个HttpResponse响应到客户端,除了返回请求的信息外,还包含Set-Cookie的头部行,该行存储cookie信息
    2. 客户端解析出Set-Cookie信息,浏览器会在其管理的特定cookie文件中添加一行cookie信息,内容来自Set-Cookie
    3. 客户端再次访问服务器,请求头部会有一行Cookie,包含所有该服务器端曾今通过Set-Cookie设置的cookie信息
  • cookie重要属性

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tOD11Ccv-1645181957456)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220206211004553.png)]

    cookie是禁止跨域名获取的,通过Domain属性可以知道cookie是属于哪个主机服务器,为实现禁止网站非法获取其他网站的Cookie提供依据

  • cookie技术的应用 — session的实现基础

    实现网站"记住"用户的功能,让服务器端拥有记忆状态的功能

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3hmWAZKU-1645181957458)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220206211356647.png)]

Session

基于cookie技术实现;

cookie记录在服务器端和客户端,session仅记录在服务器端;

客户端以cookie形式保留sessionID用于找到服务器端的Session对象;

Session中记录了用户的身份信息,登录状态和其它一些通用信息

键入URL后发生什么(超级重要)

以键入 www.google.com为例

  1. 构建HTTP请求报文

  2. DHCP协议获取属于自己的IP地址

  3. DNS域名解析获取目的IP地址

    www.google.com 并不是一个正确的互联网资源地址,一个完整的url应该是如下的形式:

    [传输协议] 😕/ [域名]:[端口号]/[请求路径]/[请求参数],例如

    http://www,zhufengpeixun.cn:80/stu/index.html?name=xxx&age=25#teacher

    但是按照这个也无法访问到对应的资源,因为域名并不能定位到某台主机,能够定位到主机的唯一方式是IP地址

    所以需要DNS协议将域名转化为IP地址,再将上面的地址转化为真正的url,如下的格式

    [传输协议] 😕/ [IP地址]:[端口号]/[请求路径]/[请求参数]

    其中.com是顶级域

    至此获取到源IP地址和目的IP地址

  4. 封装成TCP报文段(传输层)

    将请求信息作为TCP报文的正文段,添加源/目的端口号,序号等其它必备信息;

    TCP三次握手和四次挥手过程主要依靠的是TCP报文段的数据

  5. 封装IP数据报(网络层)

    将TCP报文作为数据段,添加IP数据报首部,封装成IP数据报;

    由于数据链路层能承载的一个数据单元有最大限制,TCP报文段可能被拆分成多个IP数据报分片(这样IP数据包封装成帧才不至于过大);

    首部主要添加的信息包括,生存时间,源/目的IP地址,片偏移(用于组装各个IP数据报分片),标志(判断随后是否还有分片)等

    之后应该向下继续封装成帧,需要ARP协议获取目的主机网卡(网络接口适配器)对应的MAC地址

  6. ARP获取目的MAC地址

    地址解析协议(ARP,Address Resolution Protocol)

  7. 封装以太网帧(数据链路层)

    添加源/目的MAC地址,首部和尾部

  8. 建立TCP连接,传输数据

  9. 发送HTTP请求/接收HTTP报文

    应用层使用HTTP协议,访问的网页所在的主机的HTTP服务器,返回HTTP响应报文,HTTP请求所需要的数据(比如请求路径,请求参数的等)由浏览器对url解析获得

  10. 浏览器解析渲染HTTP响应报文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值