Linux网络协议之UDP协议(传输层)
文章目录
1.深入理解传输层
1.1 对于端口号的理解
传输层是负责端对端之间的传输,
端指的是端口(port)
;TCP协议和UDP协议都是传输层的协议
- 端口(Port)标识一个主机上进行网络通信的不同的应用程序。当主机从网络中获取到数据后,需要自底向上进行数据的交付,而这个数据最终应该交给上层的哪个应用处理程序,就是由该数据当中的目的端口号来决定的
- 从网络中获取的数据在进行向上交付时,在传输层就会提取出该数据对应的目的端口号,进而确定该数据应该交付给当前主机上的哪一个服务进程
- 端口号如何找到进程?内核实现通过哈希算法,端口号对应进程PID
在TCP/IP协议中, 用 “源IP地址”, “目标IP地址”, “协议号”, “源端口号”,"目标端口号"
这样一个五元组来标识一个通信(可以通过netstat -n查看)
- 源IP地址:发送数据的主机IP
- 目标IP地址:最终接收数据主机IP
- 源端口号:发送数据主机中发送数据的进程
- 目标端口号:最终接收数据主机中要接收数据的进程
1.2 端口号范围
- 0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的
- 1024 - 65535: 操作系统动态分配的端口号。客户端程序的端口号, 就是由操作系统从这个范围分配的
1.3 常用的知名端口号
有些服务器是非常常用的, 为了使用方便, 人们约定一些常用的服务器, 都是用以下这些固定的端口号
SSH服务器:使用22端口号
FTP服务器:使用21端口号
Telnet服务器:使用23端口号
HTTP服务器:使用80端口号
HTTPS服务器:使用443端口号
使用命令 cat /etc/services 可以查看指明端口号
说明一下: 文件中的每一行对应一种服务,它由4个字段组成,每个字段之间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”
一点提醒:一个进程