计算机网络知识太难?了解这一篇就够了( 七 )


26、怎么解决拆包和粘包?分包机制一般有两个通用的解决方法:
1. 特殊字符控制;
2. 在包头首都添加数据包的长度 。
如果使用 netty 的话,就有专门的编码器和解码器解决拆包和粘包问题了 。
tips:UDP 没有粘包问题,但是有丢包和乱序 。不完整的包是不会有的,收到的都是完全正确的包 。传送的数据单位协议是 UDP 报文或用户数据报,发送的时候既不合并,也不拆分 。
27、你对 HTTP 状态码有了解吗?

  • 1XX 信息
1. 100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应 。
  • 2XX 成功
1. 200 OK
2. 204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分 。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用 。
3. 206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容 。
  • 3XX 重定向
1. 301 Moved Permanently :永久性重定向;
2. 302 Found :临时性重定向;
3. 303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源 。
4. 304 Not Modified :如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码 。
5. 307 Temporary Redirect :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法 。
  • 4XX 客户端错误
1. 400 Bad Request :请求报文中存在语法错误 。
2. 401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证) 。如果之前已进行过一次请求,则表示用户认证失败 。
3. 403 Forbidden :请求被拒绝 。
4. 404 Not Found
  • 5XX 服务器错误
1. 500 Internal Server Error :服务器正在执行请求时发生错误;
2. 503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求 。
28、HTTP 状态码 301 和 302 代表的是什么?有什么区别?301,302 都是 HTTP 状态的编码,都代表着某个 URL 发生了转移 。
  • 区别:
【计算机网络知识太难?了解这一篇就够了】301 redirect: 301 代表永久性转移(Permanently Moved)
302 redirect: 302 代表暂时性转移(Temporarily Moved)
29、forward 和 redirect 的区别?Forward 和 Redirect 代表了两种请求转发方式:直接转发和间接转发 。
直接转发方式(Forward):客户端和浏览器只发出一次请求,Servlet、html、JSP 或其它信息资源,由第二个信息资源响应该请求,在请求对象 request 中,保存的对象对于每个信息资源是共享的 。
间接转发方式(Redirect):实际是两次 HTTP 请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个 URL 发出请求,从而达到转发的目的 。
  • 举个通俗的例子:
直接转发就相当于:“A 找 B 借钱,B 说没有,B 去找 C 借,借到借不到都会把消息传递给 A”;
间接转发就相当于:"A 找 B 借钱,B 说没有,让 A 去找 C 借" 。
30、HTTP 方法有哪些?客户端发送的 请求报文 第一行为请求行,包含了方法字段 。
1. GET:获取资源,当前网络中绝大部分使用的都是 GET;
2. HEAD:获取报文首部,和 GET 方法类似,但是不返回报文实体主体部分;
3. POST:传输实体主体
4. PUT:上传文件,由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法 。
5. PATCH:对资源进行部分修改 。PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改 。
6. OPTIONS:查询指定的 URL 支持的方法;
7. CONNECT:要求在与代理服务器通信时建立隧道 。使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输 。
8. TRACE:追踪路径 。服务器会将通信路径返回给客户端 。发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器就会减 1,当数值为 0 时就停止传输 。通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪) 。
31、说下 GET 和 POST 的区别?GET 和 POST 本质都是 HTTP 请求,只不过对它们的作用做了界定和适配,并且让他们适应各自的场景 。


推荐阅读