Java面试之网络
79. http 响应码 301 和 302 代表的是什么?有什么区别?
- 301 Moved Permanently
被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
- 302 Found
请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
当网站迁移或url地址进行调整时,服务端需要重定向返回,保证原请求自动跳转新的地址。
http 协议的 301 和 302 状态码都代表重定向。浏览器请求某url收到这两个状态码时,都会显示和跳转到 Response Headers 中的Location。即在浏览器地址输入 url A,却自动跳转到url B。
- 区别:
- 301 表示被请求 url 永久转移到新的 url;302 表示被请求 url 临时转移到新的 url。
- 301 搜索引擎会索引新 url 和新 url 页面的内容;302 搜索引擎可能会索引旧 url 和 新 url 的页面内容。
- 302 的返回码可能被别人利用,劫持你的网址。因为搜索引擎索引他的网址,他返回 302 跳转到你的页面。
80.forward 和 redirect 的区别?
- forward 重定向:
- 1,重定向会改变浏览器地址栏地址
- 2,重定向不止可以访问服务器内的资源,还可以访问外部连接
- 3重定向因为是两次请求,所以重定向不能使用request来访问资源和共享数据,因为request的作用域是一次请求内,
- redirect 请求转发:
- 1,不会改变浏览器地址栏信息
- 2,只能访问服务器内部资源
- 3,是一次请求.所以可以使用request共享数据
81.简述 tcp 和 udp的区别?
- UDP 是面向无连接的通讯协议,UDP 数据包括目的端口号和源端信息。
- 优点:UDP 速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送
- 缺点:UDP 传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,也不重复发送,不可靠。
- TCP 是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手
- 优点:TCP 在数据传递时,有确认、窗口、重传、阻塞等控制机制,能保证数据正确性,较为可靠。
- 缺点:TCP 相对于 UDP 速度慢一点,要求系统资源较多。
82.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 的数据。
83.说一下 tcp 粘包是怎么产生的?
1、什么是 tcp 粘包?
发送方发送的多个数据包,到接收方缓冲区首尾相连,粘成一包,被接收。
2、原因
TCP 协议默认使用 Nagle 算法可能会把多个数据包一次发送到接收方。
应用程读取缓存中的数据包的速度小于接收数据包的速度,缓存中的多个数据包会被应用程序当成一个包一次读取。
3、处理方法
发送方使用 TCP_NODELAY 选项来关闭 Nagle 算法
数据包增加开始符和结束,应用程序读取、区分数据包。
在数据包的头部定义整个数据包的长度,应用程序先读取数据包的长度,然后读取整个长度的包字节数据,保证读取的是单个包且完整。
84.OSI 的七层模型都有哪些?
开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写:OSI;简称为OSI模型)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。
OSI模型分为七层,自下而上为 物理层(Physical Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表达层(Presentation Layer)、应用层(Application Layer)。
OSI七层模型 |
功能 | 数据格式 | 对应的网络协议 | TCP/IP四层概念模型 |
应用层 | 提供为应用软件而设的接口,以设置与另一应用软件之间的通信 | 数据ATPU | DNS、HTTP、FTP、IMAP4、POP3、SSH、TELNET… | 应用层 |
表达层 | 把数据转换为能与接收者的系统格式兼容并适合传输的格式 | 数据PTPU | ||
会话层 | 负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接 | 数据DTPU | ||
传输层 | 把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息 | 数据组织成数据段Segment | TCP、UDP、PPTP、TLS/SSL… | 传输层 |
网络层 | 决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络数据 | 分割和重新组合数据包Packet | IP(v4·v6)、ICMP(v6)、IGMP、Ipsec… | 网络层 |
数据链路层 | 负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串 | 将比特信息封装成数据帧Frame | Wi-Fi(IEEE 802.11)、ARP、WiMAX(IEEE 802.16)、PPP、PPPoE、L2TP… | 数据链路层 |
物理层 | 在局部局域网上传送数据帧(data frame),它负责管理计算机通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等 | 传输比特(bit)流 |
85.get 和 post 请求有哪些区别?
见--https://www.cnblogs.com/mjtabu/p/12090419.html
86.如何实现跨域?
-
跨域:
浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了.
-
实现方式:
基于script标签实现跨域
基于script标签实现跨域
基于jquery跨域
通过iframe来跨子域