网络协议 面试题

http 响应码 301 和 302 代表的是什么?有什么区别?
  • 301(Moved Permanently):被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
  • 302 (Found):请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
  • 区别:
    1)301 表示被请求 url 永久转移到新的 url;302 表示被请求 url 临时转移到新的 url。
    2)301 搜索引擎会索引新 url 和新 url 页面的内容;302 搜索引擎可能会索引旧 url 和 新 url 的页面内容。
    3)302 的返回码可能被别人利用,劫持你的网址。因为搜索引擎索引他的网址,他返回 302 跳转到你的页面。
forward 和 redirect 的区别?
  • 从地址栏来说:
    1)forword是服务器内部的重定向,服务器直接访问目标地址的 url网址,把里面的东西读取出来,但是客户端并不知道,因此用forward的话,客户端浏览器的网址是不会发生变化的。
    2)redirect是服务器根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的地址。
  • 从数据共享来说:
    1)由于在整个定向的过程中用的是同一个request,因此forward会将request的信息带到被重定向的jsp或者servlet中使用。即可以共享数据。
    2)redirect不能共享。
  • 从运用的地方来说
    1)forword 一般用于用户登录的时候,根据角色转发到相应的模块。
    2) redirect一般用于用户注销登录时返回主页面或者跳转到其他网站。
  • 从效率来说:
    1)forword效率高,而redirect效率低
  • 从本质来说:
    1)forword转发是服务器上的行为,而redirect重定向是客户端的行为
  • 从请求的次数来说:
    1)forword只有一次请求;而redirect有两次请求,
简述 tcp 和 udp的区别?
  • TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
  • TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
  • TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
  • TCP对应的协议:
    (1) FTP:定义了文件传输协议,使用21端口。
    (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
    (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
    (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
    (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
  • UDP对应的协议:
    (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
    (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
    (3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
tcp 为什么要三次握手,两次不行吗?为什么?
  • 两次握手只能保证单向连接是畅通的。
    Step1 A -> B : 你好,B
    Step2 A <- B : 收到。你好,A。
    这样的两次握手过程, A 向 B 打招呼得到了回应,即 A 向 B 发送数据,B 是可以收到的。
    但是 B 向 A 打招呼,A 还没有回应,B 没有收到 A 的反馈,无法确保 A 可以收到 B 发送的数据。

  • 只有经过第三次握手,才能确保双向都可以接收到对方的发送的 数据。
    Step3 A -> B : 收到,B。
    这样 B 才能确定 A 也可以收到 B 发送给 A 的数据。

说一下 tcp 粘包是怎么产生的?
  • 什么是 tcp 粘包?
    发送方发送的多个数据包,到接收方缓冲区首尾相连,粘成一包,被接收。

  • 原因
    1)TCP 协议默认使用 Nagle 算法可能会把多个数据包一次发送到接收方。
    2)应用程读取缓存中的数据包的速度小于接收数据包的速度,缓存中的多个数据包会被应用程序当成一个包一次读取。

3、处理方法
1)发送方使用 TCP_NODELAY 选项来关闭 Nagle 算法,数据包增加开始符和结束,应用程序读取、区分数据包。
2)在数据包的头部定义整个数据包的长度,应用程序先读取数据包的长度,然后读取整个长度的包字节数据,保证读取的是单个包且完整。

OSI 的七层模型都有哪些?

OSI模型分为七层,自下而上为 物理层(Physical Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表达层(Presentation Layer)、应用层(Application Layer)

get 和 post 请求有哪些区别?
  • get请求参数是连接在url后面的,而post请求参数是存放在requestbody内的。
  • 因为get请求参数暴露在url上,所以安全方面post比get更加安全。
  • get请求因为浏览器对url长度有限制(不同浏览器长度限制不一样)对传参数量有限制,而post请求因为参数存放在requestbody内所以参数数量没有限制(事实上get请求也能在requestbody内携带参数,只不过不符合规定,有的浏览器能够获取到数据,而有的不能)。
  • get请求浏览器会主动cache,而post并不会,除非主动设置。
  • get请求参数会保存在浏览器历史记录内,而post请求并不会。
  • get请求只能进行url编码,而post请求可以支持多种编码方式。
  • 浏览器在发送get请求时会将header和data一起发送给服务器,服务器返回200状态码,而在发送post请求时,会先将header发送给服务器,服务器返回100,之后再将data发送给服务器,服务器返回200 OK。
如何实现跨域?
  • 跨域是浏览器同源策略而产生的,在不同协议,不同端口,不同域名下(以上任意一个不同都算是跨域)的客服端和服务端之间是无法互相访问的
说一下 JSONP 实现原理?
  • 首先在客户端注册一个callback,然后把callback的名字传给服务器。此时,服务器先生成json数据,然后以javascript语法的方式,生成function,function名字就是传递上来I带参数jsonp。最后将json数据直接以入参的方式,放置function中,这样就生成js语法的文档,返回给客户端。客户端浏览器,解析script变迁,并执行返回javascript文档,此时数据作为参数,传入了客户端预先定义好的callback函数里。简单的说,就是利用script标签没有跨域限制的“漏洞”来达到与第三方通讯的目的。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值