Skip to content

Commit 2964666

Browse files
authored
增加了websocket和coap的说明。
1 parent b026004 commit 2964666

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

tcpip协议栈.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,9 +507,81 @@ Server: Apache-Coyote/1.1
507507

508508
### websocket
509509
WebSocket协议支持客户端与远程主机之间进行全双工通信。
510+
协议标识符是ws(如果加密,则为wss),服务器网址就是 URL,比如:
511+
```sh
512+
ws://example.com:80/some/path`
513+
```
514+
#### websocket握手协议
515+
* 浏览器请求
516+
```
517+
GET /webfin/websocket/ HTTP/1.1
518+
Host: localhost
519+
  Upgrade: websocket
520+
Connection: Upgrade
521+
  Sec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg==
522+
  Origin: http://服务器地址
523+
  Sec-WebSocket-Version: 13
524+
```
525+
526+
> WebSocket借用http请求进行握手,相比正常的http请求,多了一些内容。其中,
527+
`Upgrade: websocket`
528+
`Connection: Upgrade`
529+
表示希望将http协议升级到Websocket协议。
530+
`Sec-WebSocket-Key`是浏览器随机生成的base64 encode的值,用来询问服务器是否是支持WebSocket。
510531
532+
* 服务器回应
533+
```
534+
HTTP/1.1 101 Switching Protocols
535+
Upgrade: websocket
536+
Connection: Upgrade
537+
Sec-WebSocket-Accept: K7DJLdLooIwIG/MOpvWFB3y3FE8=
538+
```
539+
> 服务器返回
540+
`Upgrade: websocket`
541+
`Connection: Upgrade`
542+
告诉浏览器即将升级的是Websocket协议
543+
#### HTML5 Web Socket API
544+
* 创建对象
545+
```js
546+
var ws = new WebSocket(url,name);
547+
// url为WebSocket服务器的地址,name为发起握手的协议名称,为可选择项。
548+
```
549+
* 发送文本消息
550+
```js
551+
ws.send(msg);
552+
// msg为文本消息,对于其他类型的可以通过二进制形式发送。
553+
```
554+
* 接收消息
555+
```js
556+
ws.onmessage = (function(){...})();
557+
```
558+
* 错误处理
559+
```js
560+
ws.onerror = (function(){...})();
561+
```
562+
* 关闭连接
563+
```js
564+
ws.close();
565+
```
511566
### coap
512567

568+
HTTP 与 COAP协议都是通过4个请求方法(GET, PUT, POST, DELETE)对服务器端资源进行操作。
569+
两者之间明显的区别在于HTTP是通过文本描述方式描述协议包内容,协议包里面会包含一些空格符,换行符等,协议包可读性很强。
570+
而COAP是通过定义二进制各位段功能来描述协议包内容。 因此COAP协议包大小更小,更紧凑。COAP协议最小的协议包只有4B。 协议包需要经过解析后才能知道里面具体内容
571+
572+
#### coap 特点
573+
* 二进制通讯
574+
* 对云端设备资源操作都是通过请求与响应机制来完成,类似HTTP,设备端可通过4个请求方法(GET, PUT, POST, DELETE)对服务器端资源进行操作。
575+
* 协议包轻量级,最小长度仅为4B。
576+
* 支持可靠传输,数据重传,块传输。 确保数据可靠到达。
577+
* 支持IP多播, 即可以同时向多个设备发送请求
578+
* 非长连接通信,适用于低功耗物联网场景
579+
580+
#### 协议结构
581+
> coap基于UDP之上
582+
583+
UDP--->Messages--->request/response--->payload
584+
513585
### nb-iot
514586

515587
### freertos

0 commit comments

Comments
 (0)