学习李兵老师浏览器工作原理与实践课程的TCP协议笔记,目前是学习完之后的记录.本节从数据包的角度来介绍
- IP: 计算机的地址就称为IP地址,访问任何网站实际上都只是你的计算机向另外的计算机发送/请求消息.以下是简化的IP网络三层传输模型:
- 首先A主机的上层将数据包交给网络层
- 然后A主机的网络层将数据包和A主机的IP头附加到数据包上,组成新的数据包之后交给底层
- 底层拿到数据包后,通过物理网络把数据包传输给主机B
- 主机B的网络层拿到数据包之后,拆开数据包的IP头部信息,然后把剩下的数据包交给上层
- 最后,数据包上层就得到了A主机传过来的数据包
- UDP(User Datagram Protocol)---用户数据包协议: 把数据包送达到应用程序
UDP中最重要的信息之一就是端号,例如常见80,443等,有了这个我们就知道我们要传给目标主机上的哪一个应用程序了.UDP中除了目的端口,还有源端口号等信息. 以下是简化的UDP网络四层传输模型:
- 主机A上层将数据包交给传输层
- 传输层在数据包前面附上UDP头,组成新的UDP数据包后交给网络层
- 网络层将得到的数据包附加上IP头,组成新的IP数据包后交给底层
- 底层通过物理网络将数据包传给主机B的网络层, 在这里主机B拆开IP头信息,剩下的数据包交给传输层
- 传输层将数据包中的UDP头拆下来,并根据UDP中提供的端口号,把数据将交给上层对应的应用层序
- 最终,A主机传输的数据包到达了B主机上层应用程序.
UDP缺点:不能保证数据可靠性,因为他不提供重发机制,丢了就丢了,他不会再去关注传输结果.
优点: 传输速度非常快.
应用场景: 在线视频,互动游戏
疑问: 在线视频如果部分包丢失了,使用UDP岂不是会少了一段内容? 为什么会将UDP应用在这里?互动游戏也是,丢失了数据如何继续玩下去?
-
TCP(Transmission Control Protocol)---传输控制协议: 面向连接的、可靠的、基于字节流的传输层通信协议
TCP相对UDP的特点:
- 对于数据包的丢失,TCP提供重传机制;
- TCP引入了数据包排序机制,用来保证把乱序的数据包组合成一个完整的文件. 疑问2: 传输的时候是按序传输的吗?如果不是按序传输的话,如果不是的话,如果序号排后的先到了,比如最后一个序号数据包比较小,先到达了应用程序,那么是否需要等到所有的数据包都拿到了再进行组合?如果是按序传输,那如果第2个出问题了,会不会一直在尝试这个数据包的传输,导致其他的传输被堵塞?
和 UDP 头一样,TCP 头除了包含了目标端口和本机端口号外,还提供了用于排序的序列号,以便接收端通过序号来重排数据包。 TCP下的单个数据包的传输流程:
-
完整的TCP连接生命周期 = 三次握手建立连接 + 传输数据 + 四次挥手断开连接
所以TCP为了保证数据传输的可靠性,牺牲了传输速度.
疑问3: 但是这跟我http有啥关系?🤔️