一、常见名词解释
IP地址:IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址,即IP地址用于定位主机的网络地址;
IP地址是一个32位的二进制数,通常被分割为4个 8位⼆进制数(也就是4个字节),通常用 "点分十进制" 的方式来表,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数) 如:100.4.5.6;
端口号:在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。 简单说:端口号用于定位主机中的进程;
协议:在网络上传输的数据包的格式;
OSI 七层模型:
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;
TCP/IP 五层网络模型:
- 物理层:描述的是网络通信的硬件设备,集线器(Hub)工作在物理层;
- 数据链路层:负责设备之间的数据帧的传送和识别,交换机(Switch)工作在数据链路层;
- 网络层:负责地址管理和路由选择,路由器(Router)工作在网路层,IP 协议是在网络层;
- 传输层:负责两台主机之间的数据传输,TCP,UDP 协议是传输层的协议;
- 应用层:负责应用程序间沟通;对应 OSI 中的 会话层、表示层、应用层;
服务端:在常见的网络数据传输场景下,把提供服务的一方进程称为服务端,可以提供对外服务;
客户端:获取服务的一方进程,称为客户端 ;
二、TCP 和 UDP 的区别(*)
- TCP 是有连接的,UDP 是无连接的;
- TCP 是可靠传输,UDP 是不可靠传输;
- TCP 是面向字节流的,UDP 是面向数据报的;
- TCP 和 UDP 都是全双工的;
三、UDP 协议(User Datagram Protocol)
端口号(Port) 标识了⼀个主机上进行通信的不同的应用程序,0 - 1023: 知名端口号,HTTP(80),FTP(21),SSH(22),HTTPS(443) 等这些广为使用的应用层协议,他们的端口号都是固定的,当我们自己写一个程序使用端口号时,要避开这些知名端口号;
UDP 数据报格式
报头:源端口号,目的端口号,UDP 报文长度,UDP 校验和,四部分每部分 2 个字节;
UDP 采用 CRC 循环冗余算法计算校验和(本质是字符串,由原始数据生成),如果校验和出错,就会直接丢弃当前数据报;
UDP 报文长度也占两个字节 0 ~ 65535,也就是说一个 UDP 数据报能传输的数据最大长度是 64K (包含 UDP 首部),如果我们需要传输的数据超过 64K,就需要在应用层手动的分包,多次发送,并在接收端手动拼装;
计算校验和的其他算法(了解):MD5 算法,特点
- 定长:无论输入的消息有多长,MD5 总是生成一个固定长度为128位(16字节)的哈希值;
- 分散:哪怕只有一个字符不同,算出的 MD5 值的差异都会很大;
- 不可逆:MD5 算法是不可逆的,意味着不能从哈希值逆推出原始输入。这种特性使得它适合于密码存储等应用
基于 UDP 的