网络基础(应用层、传输层)

应用层

直面程序员的一层,因为应用程序时程序员自己写的,因此应用层的协议都是程序员自己决定的。

自定制协议

程序员自己根据自己的应用特点,定义协议(数据的格式 / 数据的描述信息)
在这里插入图片描述
序列化:将各个数据对象按照指定的协议组织成为持久化存储 / 数据传输的二进制数据串。(json序列化、protobuf、二进制序列化)。
反序列化:将二进制数据串按照指定协议解析得到各个数据对象。

一个序列化方式的好坏有很多的评定标准:解析性能、传输性能等。

知名协议

HTTP协议:超文本传输协议,早期专门用于传输超文本数据html,但是随着协议发展多元化,不限制数据格式。
网址- - -统一资源定位符:URL- - - 在网络中唯一标记定位一个资源。

如何定位 - - - URL中包含的元素

协议方案名称 😕/ 认证用户名:认证密码@服务器IP地址 : 服务器处理进程端口 / 请求的资源路径?查询字符串#片段标识符
http://username:[email protected]:80/index.html?name=dz&age=16#ch

服务器IP地址:我们看到的不一定是IP地址,也可能是一个域名,服务器的别名,通过域名解析服务器就能得到服务器IP地址;
服务器端口:web服务器默认http服务端口时80端口,默认不显示;
/请求的资源路径:资源在服务器上的路径,这里的 / 是http根目录,但是是一个服务器上的相对根目录,只是一个子目录;
查询字符串:客户端提交给服务端的一些数据,由 key=val&key=val 形式的键值对组成;(查询字符串中不能出现特殊字符,因为URL中特殊字符都有特殊含义,提交的数据有特殊字符会造成歧义,若提交的数据中有特殊字符,则需要进行数据转义)。

urlencode:url编码,将特殊字节每一个字节转化成16进制的数字字符,并且使用%前缀作为转义标识。(如 + -> %2b)
urldecode:url解码,在url中遇到%,则认为其后两个字符需要转义,将第一个字符转换成数字乘以16(左移4位),加上第二个字符转换的数字。
片段标识符:html中的一个标签id,直接跳转到页面的某个位置。