只实现多路复用(将来自应用层的多个应用程序的数据包组合到同一网络层)和多路分离(将来自单个网络层的数据包分发到多个应用程序)。
UDP的主要特点UDP是无连接的,可以减少建立连接的开销和发送数据之前的延时。
UDP使用最大努力交付,不保证可靠交付。
UDP是面向报文的,一次发送一个完整的报文(对应用层报文不做任何处理,仅增加一个UDP首部),适合一次性传输少量数据的网络应用。
UDP无阻塞控制,适合很多实时应用。
UDP首部开销小,仅有8B(TCP首部20B)
有单播、多播和广播的功能
相对于TCP套接字的四元组,UDP套接字只包含了目的IP+目的端口号
UDP首部格式16位源端口号:2B
16位目标端口号:2B
16位UDP长度(UDP首部+数据字段总长度):2B
16位UDP检验和(利用伪首部检验首部和数据字段是否有错,如有错则丢弃或附上错误警告交给应用层):2B
HTTPS协议Client发起一个HTTPS(https:/demo.linianhui.dev)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。
Server把事先配置好的公钥证书(public key certificate)返回给客户端。
Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
Client使用伪随机数生成器生成加密所使用的会话密钥,然后用证书的公钥加密这个会话密钥,发给Server。
Server使用自己的私钥(private key)解密这个消息,得到会话密钥。至此,Client和Server双方都持有了相同的会话密钥。
Server使用会话密钥加密“明文内容A”,发送给Client。Client使用会话密钥解密响应的密文,得到“明文内容A”。
Client再次发起HTTPS的请求,使用会话密钥加密请求的“明文内容B”,然后Server使用会话密钥解密密文,得到“明文内容B”。
在Linux系统中使用命令:curl https://www.baidu.com -v,可以观察到上述加密流程: