负责数据能够从发送端到接收端。
一. 端口号
1. 在TCP/IP协议中,用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”来标识一个通信。
源IP:指的就是发送数据包的那个电脑的IP地址。
目的IP:就是想要发送到的那个电脑的IP地址。
源端口号:源端口就是本机程序用来发送数据的端口。
目的端口号:目的端口就是对方主机用哪个端口接收。
协议号:
ip协议是网络层协议,三层的,协议号标识上层是什么协议,
eg:17号表示是上层即传输层是udp协议,
6号表示上层即传输层是tcp协议,89标识上层是ospf协议等等
tcp端口号表示是什么应用,eg:80 http服务,23 telnet服务,53 dns服务
2.端口号的划分范围
-
0 - 1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,它们的端口号是固定的。
-
1024 - 65535:操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范围分配的。
-
知名端口号的查看方式
cat /etc/servicesTCP 21端口:FTP 文件传输服务 TCP 22端口:SSH 服务器 TCP 23端口:TELNET 终端仿真服务 TCP 25端口:SMTP 简单邮件传输服务 UDP 53端口:DNS 域名解析服务 TCP 80端口:HTTP 超文本传输服务 TCP 110端口:POP3 “邮局协议版本3”使用的端口 TCP 443端口:HTTPS 加密的超文本传输服务 TCP 1521端口:Oracle数据库服务 TCP 1863端口:MSN Messenger的文件传输功能所使用的端口 TCP 3389端口:Microsoft RDP 微软远程桌面使用的端口 TCP 5631端口:Symantec pcAnywhere 远程控制数据传输时使用的端口 UDP 5632端口:Symantec pcAnywhere 主控端扫描被控端时使用的端口 TCP 5000端口:MS SQL Server使用的端口 UDP 8000端口:腾讯QQ
问题1:一个进程能否可以bind多个端口号?
可以
因为一个进程可以打开多个文件描述符,而每个文件描述符都对应一个端口号,
所以一个进程可以绑定多个端口号
问题2:一个端口号能否被多个进程绑定?
不可以
ps:如果进程先绑定一个端口号,然后在fork一个子进程,这样的话就可以是实现多个进程绑定一个端口号,
但是两个不同的进程绑定同一个端口号是不可以的
3. netstat
netstat是一个用来查看网络状态的重要的工具。
语法:netstat【选项】
功能:查看网络状态
常用选项:
- n 拒绝显示别名,能显示数字的全都转化为数字。
- I 仅列出有在Listen(监听)的服务状态。
- P 显示建立相关链接的程序名
- t (tcp)仅显示TCP的相关选项
- u (udp)仅显示UDP的相关选项
- a (all)显示所有选项,默认不显示LISTEN相关的。
二. UDP协议
1.UDP协议格式