传输层

185 阅读2分钟

传输层的功能

实现 进程 与 进程 之间端到端的通信 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]}}'