测开面试题--网络

网络的OSI七层模型:

物理层:机械、电子、定时接口通信信道上的原始比特流传输。集线器、中继器
数据链路层:物理寻址,同时将原始比特流转变为逻辑传输线路。ARP地址解析协议,RARP逆向地址解析协议。网桥,交换机
网络层:控制字网的运行,如逻辑编制、分组传输、路由选择。ICMP互联网控制信息协议。路由器
传输层:接受上一层的数据,在必要是对数据进行分割,并把这些数据交给网络层,保证数据段有效到达对端。TCP传输控制协议,UDP用户数据报协议。网关
会话层:不同机器上的用户之间建立及管理会话。SSL安全套接字层协议
表示层:信息的语法语义以及他们的关联,如加密解密、转换翻译、压缩解压缩
应用层:各种程序协议,如HTTP, FTP, SMTP, DNS

TCP和UDP的区别

  1. TCP是面向连接,UDP无连接
  2. TCP提供可靠的传输服务,UDP不可靠,因此传输速度更快
  3. TCP是面向字节流的传输协议;UDP面向数据报的传输协议
  4. TCP提供有超时重传、丢弃重复数据、检验数据、流量控制等功能,UDP没有
  5. TCP通信信道是全双工,UDP是不可靠
  6. TCP仅支持点对点通信,UDP支持一对一,一对多、多对一、多对多
  7. 报文头部不同:
    1. UDP报文头部含有:
      • 16位源端口号、
      • 16位目的端口号、
      • 16位UDP报文长度(最小8bit)、
      • 16位校验和;
    2. TCP头部包含:
      • 16位源端口号、
      • 16位目的端口号、
      • 32位序列号(tcp报文段的编号)、
      • 32位确认号(确认已收到的报文和希望收到的下一个报文)
      • 4位头部长度(表示tcp报文有多少个4字节)
      • 标志位: URG(紧急指针字段是否有效)、ACK(确认号是否有效)、PSH(不必缓冲区满即可上传)、RST(复位,用于崩溃或错误连接)、SYN(用于建立连接的同步序号)、FIN(表示发送方到达数据结尾)
      • 校验和:对整个tcp报文段的校验
      • 紧急指针:数据部分需要被紧急处理的最后一个字节编号

TCP三次握手

  1. 主机A向主机B发送请求连接的报文SYN(SEQ=x,即通知主机B可以用起始序列号为x的报文和A通信)
  2. 主机B向主机A发送的报文为:收到了A的请求连接报文并表示愿意建立连接SYN(ACK=x+1,SEQ=y,表示收到了报文x,并告诉主机A可以用y序列号与B通信)
  3. 主机A向主机B发送收到主机B发来的回复报文的应答,确认收到了回复信息(第三次存在的是为了解决 主机B向主机A发送的回复是否被正确接收)

TCP四次挥手

  1. 主机A向主机B发送FIN(SEQ=x)请求释放连接
  2. 主机B向主机A回复ACK=x+1表示收到了(即1的回复)请求释放的报文
  3. 主机B向主机A发送同意释放连接FIN=1(SEQ=y)(或不同意FIN=0还有数据要传输)
  4. 主机A向主机B回复FIN(SEQ=x+1,ACK=y+1)表示收到是否同意释放(即3的回复)

TCP拥塞控制

拥塞控制原理:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能会变坏,叫做网络拥塞。既往中数位链路容量(带宽),交换结点中的缓存和处理及等都是网络的资源。若不进行拥塞控制,网络的吞吐量将随输入负荷的增大而下降。
拥塞窗口cwnd状态变量,取决于网络的拥塞程度,并且动态变化。网络不拥塞,cwnd增大;网络拥塞,cwnd减少

TCP的四种拥塞控制算法:
  1. 慢开始:发送方cwnd=1, 发送窗口swnd=cwnd,只能发送一个数据报文段。接收方收到报文段后返回确认报文段,发送方cwnd=2,4,8,…按指数增长。当cwnd等于慢开始门限值ssthreshold,改用拥塞避免算法
  2. 拥塞避免:拥塞窗口cwnd只能线性+1。若发生超时重传,网络可能出现拥塞:ssthreshold = cwnd/2, cwnd = 1,重新开始慢开始算法
  3. 快重传:使发送方尽快进行重传,而不是等超时重传计时器超时再重传。接收方要立即发送确认,即使受到了失序的报文段也要立即发出对已收到的报文段的重复确认。发送方受到3个连续的重复确认,就将相应的报文段立即重传,不等超时重传计时器超时再重传
  4. 快恢复:发送方一旦收到3个重复确认,就不启动慢开始算法,而执行快恢复算法。将慢开始门限ssthreshold和cwnd调整为当前窗口的一半,执行拥塞避免算法。

GET和POST方法区别

GET和POST都是TCP连接,本质上都是发送请求和接收结果,在组织格式和数据量上有差别;
GET产生一个数据包,POST产生两个数据包
GET把HTTP HEADER和DATA一并发送过去,数据存储在URL地址后面,数据有长度限制。服务器响应200返回数据
POST产生两个数据包,数据存储在请求正文中,数据量没有限制。POST先发送HEADER,服务器响应100continue,然后再发送DATA,服务器响应200返回数据
POST的安全性更高,因为GET的URL会被log记录下来,如果数据中有敏感字符或特殊字符不适合用GET请求

HTTP和HTTPS

HTTP:超文本传输协议,是一种发布和接收HTML页面的方法,以明文方式发送信息
HTTPS:以安全为目标的HTTP通道,是HTTP的安全版,安全基础为SSL。SSL位于TCP/IP与各种应用层协议之间,为数据通讯提供安全支持。SSL分两层:

  1. SSL记录协议:建立在TCP之上,为高层协议提供数据封装、压缩、加密等基本功能的支持
  2. SSL握手协议:建立在SSL记录协议之上,在实际的数据传输之前通讯双方进行身份认证、协商加密算法等

HTTP和HTTPS之间的区别

  1. HTTPS协议需要CA申请证书
  2. HTTP是超文本传输协议,是一种发布和接收HTML页面的方法,信息是明文传输;HTTPS是具有安全性的SSL加密传输协议
  3. HTTP的端口号是80,HTTPS端口号是443
  4. HTTP连接简单,无状态;HTTPS是由HTTP+SSL构建的可加密传输、身份认证的网络协议,比HTTP安全
  5. 客户端浏览器要先与服务器建立TCP连接,端口号是80。客户端建立连接后发送HTTP请求;
  6. 服务器接到HTTP请求后给予相应的响应信息

Cookie和Session (数据存放位置不同)

Cookie: 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。
Session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。
Cookie和Session的共同之处在于:Cookie和Session都是用来跟踪浏览器用户身份的会话方式
Cookie 和Session的区别是:Cookie数据保存在客户端,Session数据保存在服务器端。
Cookie是存储在用户计算机上的小文件,旨在保存特定于客户端和网站的适量数据,并由Web服务器或客户端浏览器访问。帮助网站跟踪用户的访问和活动
详见 Cookies 和 Session的区别

地址栏输入网址按回车的过程

  • 浏览器对网址进行DNS域名解析,得到IP地址
  • 根据IP地址找到对应服务器,建立TCP连接
  • 浏览器发送HTTP请求
  • 服务器响应请求后返回HTML代码
  • 浏览器解析HTML代码,获得资源名称
  • 对页面进行渲染呈现给用户
  • 关闭TCP连接

网页状态码有哪些

  • 1xx - 信息提示 这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。
    • 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)
    • 101 - Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)
  • 2XX 请求成功 表示成功处理了请求的状态代码。
    • 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
      201 (已创建) 请求成功并且服务器创建了新的资源。
      202 (已接受) 服务器已接受请求,但尚未处理。
      203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
      204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
      205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
      206 (部分内容) 服务器成功处理了部分 GET 请求。
  • 3XX (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
    • 300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
    • 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
    • 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    • 303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
    • 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
    • 305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
    • 307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
  • 4XX (客户端错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
    • 400 (错误请求) 服务器不理解请求的语法。
    • 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
    • 403 (禁止) 服务器拒绝请求。
    • 404 (未找到) 服务器找不到请求的网页。
    • 405 (方法禁用) 禁用请求中指定的方法。
    • 406 (不接受) 无法使用请求的内容特性响应请求的网页。
    • 407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
    • 408 (请求超时) 服务器等候请求时发生超时。
    • 409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
    • 410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
    • 411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
    • 412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
    • 413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
    • 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
    • 415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
    • 416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
    • 417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求。
  • 5XX (服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
    • 500 (服务器内部错误) 服务器遇到错误,无法完成请求。
    • 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
    • 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
    • 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
    • 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
    • 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
      详见: 常见网页状态码
      巧记HTTP状态码

网络良好的情况下,发现数据传输过程出现404的情况,是什么原因?

HTTP 404错误意味着链接指向的网页不存在,即原始网页的URL失效,这种情况经常会发生,很难避免,当Web服务器接到类似请求时,会返回一个404 状态码,告诉浏览器要请求的资源并不存在。其导致这个错误的原因一般来说有几种情况:

  1. 无法在所请求的端口上访问Web站点。
  2. Web服务扩展锁定策略阻止本请求。
  3. MIME映射策略阻止本请求。
  4. 网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。
  5. 跟踪访问的各类脚码或CSS文件无效但调用代码依然存在。
  6. 某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报404 Not Found错误)
  7. 网页URL生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的URL地址无法访问

客户机和服务器之间进行请求的方法,有什么区别

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
详细参考:HTTP请求方式中8种请求方法

DNS查询流程:

域名管理规则:每个域名服务器只对域名体系中的一部分进行管辖,在多个小范围的域名服务器之上还应有更高级别的DNS服务器来负责小范围的DNS服务器的协调。小范围的域名服务器称为本地域名服务器,更高级别的称为二级域名服务器或顶级域名服务器。
一次域名查询过程:一般首先在本地域名服务器查找域名,若不知道,则向顶级查询,若顶级也不知道,但是知道下一级域名服务器的地址,则返回该服务器的地址,于是根据返回的服务器地址向该服务器查询IP地址,查到后则将IP地址返回给客户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值