【网络】网络协议漫谈 - 图1

互联网中,各个机器之间的交流就是依靠各种各样的网络协议的指定才得以实现的。
所谓的网络协议就好比是现实世界指定的各种交流的规则,通过遵守各种术语规则,我们就可以更好的交流了。机器也一样。

机器通过各种媒介(光、电磁波等等),然后转换成字节流,也就是(010101010100101)0和1的组合,通过制定一定的规则我们就可以识别不同的01组合代表什么意思。所谓一生二,二生三,三生万物,古代智慧真是伟大啊。

网络协议是通过分层的方式实现的,不同层实现不同的部分,上层是下层的封装。

WebSocket

http://www.ruanyifeng.com/blog/2017/05/websocket.html
WebSocket协议也是基于Tcp
其他特点包括:
(1)建立在 TCP 协议之上,服务器端的实现比较容易。
(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
(3)数据格式比较轻量,性能开销小,通信高效。
(4)可以发送文本,也可以发送二进制数据。
(5)没有同源限制,客户端可以与任意服务器通信。
(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

  1. ws://example.com:80/some/path

Http协议

Http协议是基于TCP协议之上的应用层协议。
https://hit-alibaba.github.io/interview/basic/network/HTTP.html

Http请求报文

  1. <method> <request-URL> <version>
  2. <headers>
  3. <entity-body>

GET请求报文示例:

  1. GET /books/?sex=man&name=Professional HTTP/1.1
  2. Host: www.example.com
  3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
  4. Gecko/20050225 Firefox/1.0.1
  5. Connection: Keep-Alive

POST表示可能修改变服务器上的资源的请求。

  1. POST / HTTP/1.1
  2. Host: www.example.com
  3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
  4. Gecko/20050225 Firefox/1.0.1
  5. Content-Type: application/x-www-form-urlencoded
  6. Content-Length: 40
  7. Connection: Keep-Alive
  8. sex=man&name=Professional

Http响应报文

HTTP 响应与 HTTP 请求相似,HTTP响应也由3个部分构成,分别是:

  • 状态行
  • 响应头(Response Header)
  • 响应正文

下面是一个HTTP响应的例子:

  1. HTTP/1.1 200 OK
  2. Server:Apache Tomcat/5.0.12
  3. Date:Mon,6Oct2003 13:23:42 GMT
  4. Content-Length:112
  5. <html>...

常见的状态码有如下几种:

  • 200 OK 客户端请求成功
  • 301 Moved Permanently 请求永久重定向
  • 302 Moved Temporarily 请求临时重定向
  • 304 Not Modified 文件未修改,可以直接使用缓存的文件。
  • 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
  • 401 Unauthorized 请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
  • 404 Not Found 请求的资源不存在,例如,输入了错误的URL
  • 500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
  • 503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常

Http的长连接和短连接本质上也是TCP的长连接和短连接

在Http1.0,每次请求资源都是采用短连接,也就是请求一个资源,然后获取后就断开连接。
在Http1.1,默认使用长连接,会设置 Connection: keep-alive,但是有一个时限。

TCP协议

【网络】网络协议漫谈 - 图2
TCP连接建立:(3次握手)

  • 客户端请求连接
  • 服务端确认,请求连接
  • 客户端确认

TCP连接断开:(4次挥手)
TCP连接中,客户端和服务端是相互通信,也就是所谓的双工。所以需要四次握手
一方请求断开,另一方确认断开,另一方请求断开,一方确认断开。

UDP协议

通信知识点

根据通信双方的分工和信号传输方向可将通信分为三种方式:单工、半双工与全双工。
在计算机网络中主要采用双工方式,其中:局域网采用半双工方式,城域网和广域网采用全双年方式。

  • 1. 单工(Simplex)方式:通信双方设备中发送器与接收器分工明确,只能在由发送器向接收器的单一固定方向上传送数据。采用单工通信的典型发送设备如早期计算机的读卡器,典型的接收设备如打印机。
  • 2. 半双工(Half Duplex)方式:通信双方设备既是发送器,也是接收器,两台设备可以相互传送数据,但某一时刻则只能向一个方向传送数据。例如,步话机是半双工设备,因为在一个时刻只能有一方说话。
  • 3. 全双工(Full Duplex)方式:通信双方设备既是发送器,也是接收器,两台设备可以同时在两个方向上传送数据。例如,电话是全双工设备,因为双方可同时说话。