1. 分层对应关系



OSI七层模型和TCP/IP五层模型都属于TCP/IP协议栈,而TCP/IP协议栈只有两种传输层协议:TCP、UDP,所以对于Telnet、FTP这些协议,建议称之为承载在TCP之上的协议,对于TFTP、SNMP这些协议,建议称之为承载在UDP之上的协议。

2. OSI分层描述

  • 物理层(Physical Layer)提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。
  • 数据链路层(Data Link Layer)在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。
  • 网络层(Network Layer)控制分组传送系统的操作、路由选择、用户控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。
  • 传输层(Transport Layer)提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。
  • 会话层(Session Layer)提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式 。
  • 表达层(Presentation Layer)代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。
  • 应用层(Application Layer)提供OSI用户服务。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。

3. ip命令:查看或管理路由、设备、策略路由和隧道

ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addre| route | netns }

3.1 ip link:查看或更改设备状态

语法及选项

ip link show [ DEVICE ]

dev NAME:查看指定名称的设备,因为这个参数是默认的,所以可以忽略dev直接输出设备名称。
up and down:查看状态。

ip link set [DEVICE]

dev NAME:指定设备名称,因为这个参数是默认的,所以可以忽略dev直接输出设备名称。
up and down:更改设备的状态为UP或DOWN。
arp on or arp off:接口是否支持ARP。
multicast on or multicast off:接口是否支持广播。
name NAME:改变设备的名称。如果设备是UP的,或者已经配置了一些地址,则不建议使用此操作。
mtu NUMBER:更改设备的MTU。
address LLADDRESS:更改接口的MAC地址。
broadcast LLADDRESS:设置接口的广播地址。

3.2 ip addr命令:管理协议地址

语法及选项

ip addr { add | del } IFADDR dev STRING

dev NAME:指定设备名称
local ADDRESS (default):为指定设备添加IP地址,采用IP_ADDRESS/PREFIX的方式,这是默认选项,可以忽略local直接输出IP地址/前缀。
broadcast ADDRESS:指定广播地址
label NAME:指定别名,可以为eth1:0、eth1:1这类的(除了使用IP命令创建别名,也可以通过创建名字为ifcfg-eth1:0这样的配置文件来配置多个地址)。
scope SCOPE_VAL:指定地址的生效范围:global、site、link、host。

ip addr del与ip addr add的参数一致。ip addr del的设备名是必需的参数。其余的都是可选的。如果没有给出参数,则删除第一个地址。

ip addr { show | flush } [ dev STRING ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]

dev NAME:查看指定名称的设备,因为这个参数是默认的,所以可以忽略dev直接输出设备名称。
scope SCOPE_VAL:指定地址的生效范围:global、site、link、host。
to PREFIX:列出匹配指定前缀的地址。
label PATTERN:列出label能匹配PATTERN的地址。
primary and secondary:列出primary或secondary地址。

ip addr flush与ip addr show的参数一致。不同之处在于,ip addr fulsh不会在没有参数的情况下运行。这个命令比较危险,如果配置错误会清除所有地址。

3.3 ip route命令:对主机的路由进行操作

语法及选项

ip route { add | change | replace} ROUTE

to TYPE PREFIX:添加目的路由的前缀,格式为IP_ADDRESS/PREFIX。如果不输入前缀,则相当于创建主机路由。
dev NAME:指定下一跳。
src ADDRESS:当本机访问这个网段的时候,使用的源地址是哪个IP。
mtu MTU:指定mtu大小。

ip route del和ip route add有一样的参数,但是语义略有不同。如果存在可选属性,ip验证它们是否与要删除的路由的属性一致。如果找不到具有包含指定属性的路由条目,则ip route del将失败。

ip route { show | flush } ROUTE

to SELECTOR:要查看的路由,输入IP和前缀。
dev NAME:查看指定出接口的路由。
via PREFIX:查看指定下一跳的路由。
src PREFIX:查看指定源地址的路由。
type TYPE:查看指定类型的路由。

ip route flush和ip route show有着相同的参数,但是flush不会列出路由,指挥清除。

ip route netns ROUTE

ip netns add NAME:创建指定的netns;
ip netns del NAME:删除指定的netns;
ip link set IFACE netns NETNAMESPACE_NAME:把指定接口移动到指定网络名称空间中;
ip netns list:列出所有的netns;
ip netns exec NAME COMMAND:在指定的netns中执行命令;

4. ss命令:查看socket状态

语法

ss [options] [ FILTER ]

选项

-n:不解析服务服务名。
-r:尝试解析地址与端口。
-a:查看所有socket。
-l:查看处于listen状态的socket。
-o:查看计时器信息。
-e:查看详细的socket信息。
-m:查看socket内存使用情况。
-p:查看socket使用的进程。
-i:查看内部的TCP信息。
-s:打印汇总统计,该选项不解析从各种来源获取摘要的套接字列表。
-4:仅查看ipv4的socket信息(alias for -f inet4)。
-6:仅查看ipv6的socket信息(alias for -f inet6)。
-0:查看数据包的socket信息(alias for -f link).。
-t:查看TCP的socket。
-u:查看UDP的socket。
-d:查看DCCP的socket。
-x:查看Unix domain的sockets。
-f FAMILY:Display sockets of type FAMILY,Currently the following families are supported: unix, inet, inet6, link, netlink.
FILTER := [ state TCP-STATE ] [ EXPRESSION ]:Please take a look at the official documentation (Debian package iproute doc) for details regarding filters.

例如

[leju_tianbao1@~]$sudo ss -antup
sudo: ldap_sasl_bind_s(): Can't contact LDAP server
dNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp ESTAB 0 0 10.207.0.150:45570 10.207.0.190:8649 users:(("gmond",1257,3))
tcp LISTEN 0 128 :::22 :::* users:(("sshd",1219,4))
tcp LISTEN 0 128 *:22 *:* users:(("sshd",1219,3))
tcp ESTAB 0 164 10.207.0.150:22 10.207.69.144:11681 users:(("sshd",29779,3),("sshd",29781,3)) [leju_tianbao1@~]$ss -o state established ' ( sport = :22 or dport = :23423 ) ' dst 10.207.69.0/24
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 52 10.207.0.150:ssh 10.207.69.144:11681 timer:(on,438ms,0) [leju_tianbao1@~]$ss -o state established ' ( sport = :22 ) '
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 52 10.207.0.150:ssh 10.207.69.144:11681 timer:(on,454ms,0) [leju_tianbao1@~]$ss -o state established '( dport = :ssh or sport = :ssh )'
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 52 10.207.0.150:ssh 10.207.69.144:11681 timer:(on,525ms,0)

网络模型、IP命令、SS命令介绍的更多相关文章

  1. Linux命令--ss命令的参数及使用详解

    ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信 ...

  2. ss命令结合zabbix对socket做监控

    本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 最近天冷了,socket也出问题了,一直没有做监控,现在就把监控加起来,目前我们使用的有z ...

  3. linux包之iproute之ss命令

    概述 [root@localhost ~]# rpm -qa|grep iprouteiproute-2.6.32-31.el6.x86_64 当服务器的socket连接数量变得非常大时,无论是使用n ...

  4. 【转载】运维小技巧:使用ss命令代替 netstat

    转自:https://www.91ri.org/12470.html ss是Socket Statistics的缩写. 顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类 ...

  5. 使用ss命令代替 netstat

    ss是Socket Statistics的缩写. 顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的 ...

  6. [转] 运维小技巧:使用ss命令代替 netstat,和netstat说再见

    [From] https://blog.csdn.net/fenglailea/article/details/51810977 ss是Socket Statistics的缩写. 顾名思义,ss命令可 ...

  7. 良许 | 网络检测神器 ss 命令,你可能根本就不会用!

    今天我们来介绍一下 Linux ss 命令. ss 是 Socket Statistics 的缩写,用来统计 socket 连接的相关信息,它跟 netstat 差不多,但有着比 netstat 更强 ...

  8. ss命令和Recv-Q和Send-Q状态

    ss 用来显示处于活动状态的套接字信息.ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比nets ...

  9. 每天一个linux命令(57):ss命令

    ss是Socket Statistics​的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的 ...

随机推荐

  1. lodop

    一.控件参数 Lodop有如下控件参数,以页面object对象元素的参数形式使用: Caption名称:设置控件的显示标题格式: < pa ram name="Caption" ...

  2. 【bug】Android版QQ浏览器广告过滤

    省流加速 - 广告过滤   默认开启 设别广告是添加的标签最外层标签带有adv download

  3. TypeError: expected bytes-like object, not str

    报错内容:TypeError: expected bytes-like object, not str 例: a = base64.b64encode(temp) 改为: a = base64.b64 ...

  4. 使用vue-cli启动项目出错

    Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 API 实现响应的数据 ...

  5. 连接mysql时提示java.sql.SQLException: Access denied for user 'root'@'DESKTOP-N2B2D9A' (using password: YES)

    用root连接mysql时提示:访问被拒绝 检查一下mysql server是否开启,发现后台在运行着..  然后查了一下mysql的用户表,发现root只能运行使用本地ip(localhost或者1 ...

  6. ViewModel、ViewData、ViewBag、TempData、Session之间的区别和各自的使用方法

    ViewModel    ViewModel 是一个用来渲染 ASP.NET MVC 视图的强类型类,可用来传递来自一个或多个视图模型(即类)或数据表的数据.可将其看做一座连接着模型.数据和视图的桥梁 ...

  7. P2339 提交作业usaco(区间dp)

    P2339 提交作业usaco 题目背景 usaco 题目描述 贝西在哞哞大学选修了 C 门课,她要把所有作业分别交给每门课的老师,然后去车站和同学们一起回家.每个老师在各自的办公室里,办公室要等他们 ...

  8. 3-3 编程练习:jQuery键盘事件案例

    3-3 编程练习 完善下面的代码,在input框中输入内容的时候同样显示在下面的p标签中 <!DOCTYPE html> <html lang="zh-CN"&g ...

  9. (快速幂)51NOD 1046 A^B Mod C

    给出3个正整数A B C,求A^B Mod C.   例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^ ...

  10. Python中re操作正则表达式

    在python中使用正则表达式 1.转义符 正则表达式中的转义: '\('表示匹配小括号 [()+*/?&.] 在字符组中一些特殊的字符会现出原形 所有的\s\d\w\S\D\W\n\t都表示 ...