3、传输层(TCP、UDP)、socket、SSL
回忆线索:UDP和TCP的内容,TCP三次握手,四次挥手。三次握手中为什么序号不能都从1开始?起始序号是怎么确定的?四次挥手中,为什么发起端要有三个等待时间?SACK是什么?TCP保证连接稳定性的措施有哪些,都有什么方法解决?socket是以什么样的形式存在于系统中的?怎么连接多个socket?C10K问题是什么?可以怎么解决C10K问题?
0、传输层选择考虑的因素
【1】应用需要可靠数据传输还是容忍丢失(多媒体应用)
【2】应用的吞吐量要求:带宽敏感的应用(多媒体)还是弹性应用(邮件、文件传输)
【3】定时:对定时要求高(交互式实时应用、视频在线游戏)还是低
【4】安全性:是否需要数据完整性识别、端点鉴别
1、TCP和UDP区别
TCP面向连接,可靠的,拥塞控制;
UDP面向无连接,不可靠的。也就是两端不需要维护一定的数据结构来记录双方的交互状态。
2、UDP协议:端口号(用于多路复用/多路分解来自上层应用的数据)
UDP包头结构:只记录端口号以及简单的数据相关信息。
应用场景:不怕丢包,只要快
(1)需要资源少、网络比较好、对丢包不敏感的内网:DHCP
(2)不需连接,只需广播的应用:DHCP
(3)要快,时延低,可容忍少量丢包
应用实例:
(1)QUIC(Quick UDP Internet Connections,快速UDP互联网连接)
(2)流媒体协议,因为直播的东西,丢了就丢了,最重要快
(3)实时游戏,同上
(4)loT物联网:因为内存小,维护连接的数据结构代价太大
(5)移动通信领域:连接的状态保存有别的协议做了,所以没必要TCP
连接流程:
QUIC协议(基于UDP,但也是面向连接的)
【1】自定义连接机制