目录
1、应用层的作用
负责应用程序之间的数据沟通
2、应用层协议
自定制协议:程序员自己设计的协议,涉及到数据传输性能、数据的解析性能
序列化:将多个数据对象按照指定协议进行组织成为持久化存储或数据传输的二进制数制串
反序列化:将二进制数制串按照指定协议进行解析得到各个数据对象
典型序列化方式:
结构体二进制序列化;protobuf序列化;json序列化
知名协议:HTTP协议
3、HTTP协议
HTTP:超文本传输协议
URL
网址:URL-统一资源定位符,在网络中定位某台主机上的某个资源
格式:协议方案名://用户名:密码@服务器的域名或IP地址:端口/path路径?查询字符串#片段标识符
举例:https://user:pass@www.icourse163.org/spoc/university/SUST:80?_trace_c_p_k2_=9fcf0cff1fc74694b4f996008e7029a8#/c
详细讲解:
- 协议方案名:HTTP/HTTPS
- 域名:服务器的一个别名,由字符串组成,最终进行转换可以得到服务器IP地址,进而请求服务器
- 端口:HTTP服务默认使用80端口,URL中默认使用80(HTTP只是一个协议,并不使用端口,这里指的是使用HTTP协议的web服务器进程socket默认使用80端口);HTTPS默认使用433端口
- 资源路径:所请求的资源在服务器上的一个相对路径
- 查询字符串:提交给服务器的数据,由key=val形式的键值对构成,键值对之间以&符号间隔(例如:key1=val1 & key2=val2)
在URL中,很多特殊字符都有特定含义,因此在查询字符串中或者请求的资源路径中包含有特殊字符,就会与URL中的特殊字符产生歧义。因此一旦数据中有特殊字符,就要进行转义表示——URL编码
urlencode和urldecode
urlencode:将特殊字符的每个字节转换成其十六进制的数字字符,转移之后为了表示这是经转义的字符,因此使用前缀%表示
urldecode:在URL中遇到%则认为其后两个字符是URL编码后的数据,需要解码,两个字符都转换为数字——第一个字符*16 + 第二个字符
HTTP协议实现
- HTTP协议是一个字符串明文协议ÿ