一、前言
本系列文章旨在复习计算机网络核心知识,进一步夯实基础,为以后 参与物联网、音视频、直播、即时通讯等领域的项目做一定的知识储备。
文章列表:
- 01-📝计算机网络核心知识|计算机网络通识【计算机网络性能指标、网络协议分层的几种方式、OSI七层模型概念通识】
- 02-📝计算机网络核心知识|【搭建调试环境、新建Java项目、计算机通信基础、计算机连接方式、集线器/网桥/交换机/路由器】
- 03-📝计算机网络核心知识|【MAC地址、IP地址的组成、IP地址的分类、CIDR、子网掩码、超网】
- 04-📝计算机网络核心知识|【 静态路由、动态路由、数据包的传输、ISP、服务器机房、网络分类、家用无线路由器、公网IP、
- 05-📝计算机网络核心知识|物理层/数据链路层【模拟信号&&数字信号、数据链路层】
- 06-📝计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】
- 07-计算机网络协议核心知识|【传输层-UDP】
- 08-计算机网络协议核心知识|【传输层-TCP之可靠传输】
- 09-📝计算机网络核心知识|传输层TCP2【流量控制原理、拥塞控制:slow start、congestion avoidance、快速重传、快速恢复】
- 10-计算机网络协议核心知识|【传输层-TCP连接】
- 11-计算机网络协议核心知识|【 应用层】
- 12-📝计算机网络核心知识|【Cookie、Session(概念、生命周期、有效期、浏览器的要求等)、跨域(概念、 同源策略、跨域解决方
- 13-计算机网络协议核心知识|【 代理/CDN/网络安全】
- 14-计算机网络协议核心知识|【(非)对称加密/数字签名/证书】
- 15-计算机网络协议核心知识|【HTTPS】
- 16-📝计算机网络核心知识|HTTPS协议【HTTP2、HTTP3】
本文主要关注:
传输层有两个协议是每一个程序员必然知道的:UDP、TCP。
二、传输层(Transport)
TCP和UDP的区别:
1. 连接性
- TCP是面向连接
- 也就是说TCP传输必须先要建立连接才能通信,建立连接就是我们熟知的“三次握手”。
- TCP在数据传输完毕后需要断开连接,因为服务器会有端口不断的监听本次连接的状态,如果不断开就会一直占用资源,断开连接需要“四次挥手”。
- UDP是无连接,通信时不需要建立连接,发送方直接发送数据,不关心接收方的接收状态。
2. 可靠性
- TCP:可靠传输,不丢包。只要发现丢包就会重新发送,会保证数据是准确的。
- UDP:不可靠传输,可能丢包。只管发送,不管接收方的是否接收到。
3. 首部占用空间
- TCP:由于是建立连接的可靠传输,所以首部会比较复杂,占用空间也就会比较大。
- UDP:几乎是无脑传输,所以只需要知道源和目标信息就可以了。相比TCP就会小很多。
4. 传输速率
UDP的特点使得其传输速率比TCP快。
5. 资源消耗
- TCP由于需要建立连接,所以会比较消耗资源。
- UDP资源消耗就比较小。
6. 应用场景
- 浏览器、文件传输、邮件发送等都需要保证数据的完整性,所以使用TCP比较合适。
- 音视频通话、直播等对时效性要求较高,所以使用UDP更佳。
- 如果使用TCP就会发生数据混乱,比如3s前的音/影由于丢包原因在2min后才成功发送到接收方。
7. 应用层协议
- 浏览器:HTTP、HTTPS
- 文件传输:FTP
- 邮件:SMTP
- DNS
三、UDP
UDP(User Datagram Protocol):用户数据报协议。
UDP是无连接的,减少了建立和释放连接的开销。UDP尽最大能力交付,不保证可靠交付,因此不需要维护一些复杂的参数,首部只有8个字节(TCP的首部至少20个字节)。
1. UDP长度(Length)
占16位,首部的长度 + 数据的长度。
2. 检验和(Checksum)
检验和的计算内容:伪首部 + 首部 + 数据。
伪首部是固定的12字节,由源IP地址(4个字节) + 目的IP地址(4个字节) + 保留位(1个字节,默认是0) + 协议代表值(1个字节,UDP固定值17) + UDP长度(2个字节)组成。仅在计算检验和时起作用,并不会传递给网络层,目的是为了增强检验功能。
检验和一般有两种,一种是
首部 + 数据,另一种是只计算首部。
3. 端口(Port)
UDP首部中端口占用2字节。可以推测出端口号的取值范围是:0 ~ 65535。
客户端的源端口是临时开启的随机端口。
防火墙可以设置开启/关闭某些端口来提供安全性。
常用命令行:
netstat -an:查看被占用的端口netstat -anb:查看被占用的端口,占用端口的应用程序telnet 主机 端口:查看是否可以访问主机的某个端口。-
Windows:安装telnet,控制面板 -> 程序 -> 启动或 关闭Windows功能 -> 勾选
Telnet Client-> 确定。
-