传输层的功能
实现 进程 与 进程 之间端到端的通信 1: 多路复用和分发 2: 流量控制 3: 拥塞控制
传输层的协议有哪些
- tcp
- udp
传输层所应用的地点
Linux 内核就内置了 tcp协议和udp协议的实现。所以也可以这样理解,Linux内核应用了传输层。
传输层所抽象的资源
端口
端口
端口的属性
端口号 协议类型
Linux 端口 是否是 net namespace 隔离的
是的
Linux 端口号的范围
0 - 65535 注意 nc -l 65537 可以运行,但是ss -nlt 查看信息,可以发现 并没有65537的监听端口
端口号的范围划分
[0 - 1023] : 系统端口 [1024 - x-1] , [y+1 - 65535] : 注册端口 [x - y] : 动态端口
这里的 x y 的取值,取决于 /proc/sys/net/ipv4/ip_local_port_range 文件之中参数的配置, /proc/sys/net/ipv4/ip_local_port_range 文件之中是两个值,表示范围,x 是第一个参数,y是第二个参数。
动态端口的作用:在此服务器向外界服务器进行访问时,会动态分配一个端口号,所分配的端口号的范围就是 /proc/sys/net/ipv4/ip_local_port_range 文件之中的取值,范围区间前后闭合。
端口资源的限制
1: 在 协议类型 本机ip地址 固定的情况下,本机所能监控的端口数是固定的,不能超过65535
2: 在 协议类型 目的ip 目的端口 本机ip 不变的情况下,服务器所能动态分配的端口数是固定的。也就是说,本机访问外网的一个服务器上的进程(协议类型+ip地址+端口固定),所能建立的连接数是固定的。数目由 /proc/sys/net/ipv4/ip_local_port_range 文件决定
端口监控
Linux 下 端口信息的监控工具
- ss
- netstat
Linux 端口监控 需求
1: 获得当前 net namespace 下 本机ip地址下 tcp协议 监控的端口数
ss -lnt --no-header | awk '{print $4}' | awk -F ':' '{count[$1]++;} END {for(i in count) {print i,count[i]}}'
2: 查看 当前服务器下 协议类型 目的ip 目的端口 来源ip 一致的情况下,动态分配的端口数 tcp 协议
ss -nt --no-header | awk -v OFS=":" '{print $4,$5}' | awk -F ":" -v OFS=":" '{print $1,$3,$4 }' | awk -F '|' '{count[$1]++;} END {for(i in count) {print i,count[i]}}'
udp 协议
ss -nu --no-header | awk -v OFS=":" '{print $4,$5}' | awk -F ":" -v OFS=":" '{print $1,$3,$4 }' | awk -F '|' '{count[$1]++;} END {for(i in count) {print i,count[i]}}'