无知的我正在复盘计算机网络。。。
笔记特点是 我重新整理了涉及资料的一些语言描述、排版,而使用了自己比较容易理解的描述、同样是回答了一些常见关键问题。。。
UDP和TCP的对比
TCP/IP体系结构的运输层的两个重要协议
UDP和TCP都是TCP/IP体系结构的运输层的重要协议
如下是TCP、UDP在网络通信中的位置
无连接和面向连接
UDP无连接;TCP面向连接。如图
UDP协议无连接 特点
- 可以随时进行数据传输
TCP协议 面向连接 特点
- 需要“三次握手”建立连接来进行数据传输
- 结束数据传输后,还需要“四报文挥手”释放连接
单播与广播
UDP支持单播、多播以及广播;TCP仅支持单播。如下图
应用报文的处理
UDP是面向应用报文的
UDP对应用进程交下来的报文既不合并也不拆分,而是保留这些报文的边界
TCP是面向字节流的
-
TCP将应用程序传输下来的报文看作一连串、无结构的字节流,将它们编号并存储在自己的发送缓存中
-
TCP根据发送策略从发送缓存中提取一定数量的字节,构建TCP报文段并发送
-
接收者从接收到数据报文后,取出数据载荷部分并存储在接收缓存中 并 从数据缓存中取出一些字节交给应用进程。
=>TCP不保证接收方接收到的数据块 与 发送方应用进程发送的数据块大小一致
比如说发送方发送了10个数据块,但接收方只用了4个数据块,就把收到的字节流交付给了上层的应用进程。
引出问题 但是接收方接收到的字节流必须要和发送方应用进程发送的字节流完全一样;接收方必须由能力识别收到的字节流,将其还原为有意义的应用层数据。这正是TCP实现可靠传输、流量控制、以及拥塞控制的基础
应用报文基于不同协议的处理机制。如图
注意:
TPC是全双工通信的。为了方便,上图只画了一个方向的数据流,事实上,基于TCP的两端可以同时进行TCP报文段的发送和接收。
一个TCP报文段数据部分包含成千上万个字节是很常见的。上图的TCP报文段数据部分只包含了几个字节
向上层提供的传输服务
UDP向上层提供无连接、不可靠传输服务;TCP反之。如图
UDP不可靠传输 原因
- 当在传输过程中,用户数据因为受到干扰而产生误码。接收方UDP仅仅丢弃该数据报。但是它原本可以通过该数据报首部中的校验和字段的值检查出产生误码的原因
- 如果数据报被因特网的某个路由器丢弃了。发送发UDP不作任何处理
TCP的可靠传输 原因
因为尽管IP数据报在传输过程中出现丢失或误码的问题,但是经过运输层的TCP处理后就解决了这些问题。
为了更好地理解上述意思,可以将TCP收发双方是基于TCP可靠信道传输数据的。
报文格式
UDP用户数据报首部仅8字节。//仅仅在网际层的基础上,添加了两个关于的端口号字段
TCP报文段首部最小20字节,最大60字节
如图是它们的报文格式