本文已参与「新人创作礼」活动,一起开启掘金创作之路。 代码分层的本质就是协议分层。
就是代码太复杂了。要拆分成多个小部分。
TCP/IP五层协议栈
应用层
这个是打交道最多的地方,
设计协议设定
1.明确传输的信息
2.明确数据的组织格式
当下比较流行的协议模板
1.xml
2.json
3.protobuffer
xml
格式比较有特点,由标签组成
json
通过大括号包起来的键值对,键值之间用逗号分开,键和值之间靠冒号
protobuffer
不再包含key的值,而是通过顺序和一些特殊的符号来区分每个字段的含义
HTTP
当下对留下的协议后面会专门介绍
传输层
socket的代码是进入到传输层的。我们要对这个有一定了解,对我们的开发有帮助。
著名的端口
80:http服务器
443:https服务器
22:ssh
23:ftp
传输层最著名的两个协议是UDP和TCP
之前我们有解释他们两个的区别。
UDP
UDP报头占八字节
包含:
1.源端口
2.目的端口
3.报文长度(单位字节)当报文的长度过高的时候,咱们就会拆分。会导致丢包
4.校验和:验证网络上传输的数据是否正确
TCP
包含
1.源端口(16位)
2.目的端口(16位)
3.序号(32位)
4.确认序号(32位)
5.首部长度(4位)
6.保留(6位)
7.URG
8.ACK
9.PSH
10.RST
11.SYN
12.FIN
13.窗口大小(16位)
14.校验和(16)
15.紧急指针(16位)
16.选项(可有可无)
17.数据