数据通信
什么是协议
为了使数据可以在网络上从原传递到目的地,网络上所有设备需要讲相同的语言
描述网络通信中语言规范的一组规则就是协议
数据通信协议的定义
决定数据的格式和传输的一组规则或者一组惯例
协议分层
网络通信的过程很复杂
数据以电子信号的形式穿越介质到达正确的计算机,然后转换成最初的形式,以便接受者能够阅读
为了降低网络设计的复杂性,将协议进行了分层设计
分层设计意义
用户服务层的模块设计科相对独立于具体的通信线路和通信硬件接口的差别
服务与服务访问点
服务
是网络中各层向其相邻上层提供的
服务访问点
在同一系统中相邻两层的实体进行交互的地方
服务类型
面向连接的服务:
先建立连接再传输数据,之后再断开链接
数据传输过程中,数据包不需要携带目的地址
保证数据传输的可靠性
无连接的服务:
不需要实现建立连接,直接发送数据
每个报文都带有完整的目的地址
不保证报文传输的可靠性
TCP:传输控制协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。
服务元素
面向连接的服务在建立连接和断开连接过程中,使用以下几个服务元素
元素 | 意义 | 举例 |
---|---|---|
请求(Request) | 用户请求建立一个链接 | 用户拨号 |
指示(Indication) | 服务提供者向被呼叫方示意有人请求建立连接 | 被呼叫用户电话振铃 |
响应(Response) | 被呼叫方用来表示接受建立连接请求 | 被呼叫方摘机 |
确认(Confirm) | 服务提供者通知呼叫方建立连接的请求已被接受 | 呼叫方听到拨号音停止,对方摘机 |
网络分层:
重点:
1、osi七层模型;
2、osi七层模型的功能;
3、每层都走什么设备;
4、每层的PDU。
OSI的七层框架2-1
OSI的七层框架2-2
名称 | 功能 | 实例 |
---|---|---|
应用层 | 用户接口 | HTTP |
表示层 | 数据的表现形式、特定功能的实现, | :加密 ASCII、EBCDIC、JPEG |
会话层 | 对应用会话的管理同步 | 操作系统/应用读取 |
传输层 | 对应用会话的管理同步 | 操作系统/应用读取 |
网络层 | 提供逻辑地址、选路 | IP |
数据链路层 | 成帧、用MAC地址访问媒介、错误检测与修正 | 802.3/802.2 HDLC |
物理层 | 设备之间的比特流的传输、物理接口、电气特性等。 | EIA/TIA-232V.35 |
数据源的封装与解封装过程
LLC封装处理转换成数据帧
MAC:MAC子层的主要功能包括数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等。MAC子层的存在屏蔽了不同物理链路种类的差异性。
查看网络接口信息——ifconfig命令
查看IP信息等
在上图输出结果中,ens33对应为第一块物理网卡,lo对应为虚拟的回环接口。
ens33:第一块以太网卡的名称。“ens33”中的“ens”前面的en为单词
ethernet(以太网)的缩写,表示网卡类型为以太网,s为可热插拔网卡,
数字33表示网卡名称,由于大多数主机只有一块物理网卡,因此“ens33”
代表系统唯一的网络接口,如果有多个物理网卡,则第二块网卡表示为增加
数字,依次为由小到大。
注意:CentOS6系统和Debian系统的用户都知道,他们采用的默认网卡名称
为eth0,远比ens33看起来简单易懂。
RedHat/CentOS7系统采用dmidecode采集命名访问,采用了硬件相关信息,可以
实现网卡名字永久唯一化。然而并不是所有7系列操作系统默认命名方式都是
ens33,比如阿里云采用的是KVM(虚拟化)技术
VIrtualBox则是“enpOs3”:
en:ethernet
O:主板板载网卡,集成似的设备索引号
p:独立网卡,PCI网卡
s:热插拔网卡,USB之类的扩展槽索引号
nnn(数字):MAC地址+主板信息计算得出唯一序列
lo:“回环”网络接口,“lo”是“lookback”的缩写,它并不代表真正的网络
接口而是一个虚拟的网络接口,其IP地址默认是“127.0.0.1”,回环地址通常
仅用于对本机的网络测试。
查看指定的网络接口信息:
从上图执行结果中,可以获知ens33网卡的一些基本信息,如下:
ether:表示网络接口的物理地址(MAC),如00:0c:29:6a:al:15
网络接口的物理地址是不能更改的,是网卡在生产时确定的全球唯一的
硬件地址
inet:表示网络接口的IP地址。
broadcast:是网络接口所在网络的广播地址
netmask:表示网络接口的子网掩码
除此以外,还能通过“TX”“RX”等信息了解到通过该网络接口和接收的数据包
个数流量等更多属性。
测试网络连接
ping命令
使用命令时可以项目的主机持续地发送测试数据包,并显示反馈结果,知道按Ctrl+C
组合键后终止测试,并显示最终统计结果。
-c 指定发送几次
-s 数据包大小
-i 指定收发信息的间隔时间
查看及测试路由记录
route
查看或设置主机中的路由表信息
route [-n]
Linux系统中的路由表决定着从本机想其他主机,其他网络发送数据的去向,是
排除网络故障的关键信息,直接执行route命令可以查看当前主机中路由表信息
在输出结果中,Destination列对应目标网络地址,Gateway列对应下一跳路由器
的地址,Flags列对应发送数据的网络接口(U:UP,是启动状态,G:此IP地址为
网关地址。)
Destination:对应目标网络地址(Src:源地址)
Gateway:下一跳路由器的地址
Flags:对应发送数据的网络接口(U:是UP,启动状态,G:此IP地址为网关地
址,R:动态路由RIP模式,D:动态路由ospf模式)。
Metric:路由距离
Ref:路由引用次数
Use:被使用次数
Iface:网卡名称
当目前网段为“Default”时,表示此行是默认网关,当下一跳为*时,表示目标
网段是与本机直接相连的
若结合“n”选项使用,可以将路由记录中地址显示为数字形式,这可以跳过解
析主机名的过程,在路由条目较多的情况下能够加速执行。
traceroute
测试从当前主机到目标主机间经过的网络节点
使用本命令可以测试从当前主机到目的主机之间经过了那些网络节点,并显示各
中间节点的连接状态(相应时间)。对于无法相应的节点,连接状态将显示为*
(可以检测网络在哪里出现故障)
traceroute 目标主机地址
本命令可以比ping更准确地定位网络连接的故障点(中断点),执行速度也因此
会比ping命令稍慢,在网络测试与拍错过程中,通常会先使用ping命令与目的主
机的网络连接,如果发现网络连接有故障,在使用本命令跟踪查看是在哪个中间
节点存在故障的。
查看网络连接情况
netstat
通过netstat命令可以查看当前系统的网络连接状态,路由表,接口统计等信息
是了解网络状态及排除网络服务故障的有效工具,以下是netstat命令常用的几
个选项。
-a:显示当前主机中所有活动的网络连接信息(包括监听、非监听状态的服务端
口)
-n:以数字的形式显示相关的主机地址、端口等信息。
-r:显示路由表信息。
-l:显示处于监听(Listening)状态的网络连接及端口信息。
-t:查看TCP协议相关的信息。
-u:显示UDP协议相关的信息。
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的TCP连接信息,
同时显示对应进程信息,结合命令管道使用“grep”命令,还可以在结果中过滤
出所有需要的特定记录。例如:执行以下操作可以查看本机中是否有监听
“TCP80”端口(即标准http服务)的服务程序,输出信息中包括PID和进程名称
使用nslookup命令测试DNS域名解析
当域名解析出现异常时,将无法使用域名的形式访问网络中的Web站点,电子邮
件系统等服务,nslookup命令时用来测试域名解析的专用工具,使用时只要指定
需要解析的目标域名作为参数即可,例如:“nslookup www.baidu.com”命令
后,nslookup程序将提交查询请求,询问站点www.baidu.com对应的IP地址是多
少。
查看及测试主机名称
hostname
查看或设置当前主机名
-v:详细信息模式;
-a:显示主机别名;
-d:显示DNS域名;
-f:显示FQDN名称;
-i:显示主机的ip地址;
-s:显示短主机名称,在第一个点处截断;
-y:显示NIS域名。
更改命令提示符中本地名:(永久更改)/etc/sysconfig/network
设置网络地址参数:
临时配置:
通过命令行直接修改当前正在使用的网络地址,修改后立即生效。这种方式
操作简单快速,执行效率高,一般在调试网络的过程中使用,但由于所做的修改并没有
固定的存放在静态文件中,因此当重启network服务或重启主机后将失效。
固定配置:
通过配置文件来存放固定的各种网络地址,需要重启network服务或重启主机
后才会生效,这种方法操作上相对复杂一些,但相当于“永久配置”,一般在需要为服务器
设置固定的网络地址时使用。
使用网络配置命令
1、使用ifconfig命令修改网卡的地址、状态:
ifconfig命令不仅可以用于查看网卡配置,还可以修改网卡的IP地址、子网掩码,也可以
绑定虚拟网络接口,激活或停用网络接口。
1.1修改网卡ip地址、子网掩码:
需要设置网卡的地址时使用如下命令:
ifconfig 网络接口名称 IP地址 [netmask子网掩码]
或者
ifconfig 网络接口名称 IP地址[/子网掩码]
通常有第二种方式,当不指定子网掩码时,将使用IP地址所在分类的默认子网掩码。
指定新的IP地址和子网掩码以后,原有的地址将会失效。例如:在执行以下操作可以
将网卡ens33的IP地址设置为192.168.0.10,子网掩码长度是24。
ifconfig ens33 192.168.0.10/24
或者
ifconfig ens33 192.168.0.11 netmask 255.255.255.0
2.2禁用、激活网络接口:
需要临时禁用或者重新激活制定网络接口时,需要结合“down”、“up”开关选项,网络接
口被禁用后,将无法使用该网络接口与其他主机进行连接。例如,执行以下操作将会禁
用网卡ens33
ifconfig ens33 down
3.3绑定虚拟接口:
在对服务器进行调试的过程中,有时候需要临时在同一个网卡上使用一个新
的IP地址,但是又不能覆盖原有IP地址而导致服务程序不可用。这时可以为网卡绑
定一个虚拟的网络接口,然后再为虚拟接口设置新的IP地址(相当于一块网卡配置
多个IP地址)。例如:执行以下操作可以为网卡ens33添加一个虚拟接口ens33:0,
并将这个虚拟接口的IP地址设置为192.168.0.10虚拟接口的IP地址和网卡原有的IP地
址都可以正常使用。
ifconfig ens33:0 192.168.0.10/24
2、使用route命令添加、删除静态路由记录:
(1)添加、删除指定网段的路由记录:
通过“route add”操作可以添加路由记录,结合“-net”选项制定目标网段的地址
结合“gw”选项指定下一跳路由器的IP地址。例如:若要使本机访问另一个网段
192.168.1.0/24的数据包都发给192.168.0.254,可以执行以下操作,需要注意
的是,默认网关的IP地址应该与本机其中一个接口的IP地址在同一网段内。
route add -net 192.168.1.0/24 gw 192.168.0.254
(2)添加、删除默认网关纪录:
添加、删除默认网关纪录时,与添加、删除静态路由记录的命令格式类似,
但指定目标网段时只需要简单的使用“default”表示即可,无须再使用“-net”选项
指定网段地址。例如:执行以下操作将先删除已有的。
route | grep “default”(查看原路由表中的默认网关记录)
default localhost 0.0.0.0 UG 100 0 0 ens33
route del default gw 0.0.0.0 (删除默认网关记录)
route | grep default (查看是否删除成功)
route add default gw 192.168.0.254
需要注意的时是,在同一个主机路由表中应有一条默认网关记录,若同时存在
多条默认网关记录,可能会导致该主机网络连接出现故障。
网卡配置文件中:
NAME:设置网络接口的名称.
ONBOOT:设置网络接口是否在Linux系统启动时激话.
BOOTPROTO:设置网络接口的配置方式,值为"static"时表示使用静态网络指定IP地
址,为"dhcp"时表示通过DHCP的方式动态获取地址。
IPADDR:设置网络接口的IP地址
NETMASK:设置网络接口的子网掩码。
GATEWAY:设置网络接口的默认网关地址
(3)启用、禁用网络接口配置:
在RHEL, Centos系统中,当修改了网络接口的配置文件以后,若是要新的配置文
件生效,可以重启network服务或者重启主机,默认情况下,重启network服务将先关闭
所有网络接口。
systemctl restart network
如果只想禁用、启用某一个网络接口(而不是所有网络接口),可分别使用两个
接口控制脚本ifdown、ifup,例如,执行以下操作将会关闭ens33网卡,然后在根据配
置文件启用ens33网卡
ifdown ens33
3、域名解析配置文件:
(1)指定为本机提供DNS计息服务地址:
/etc/resolv.conf文件中记录了本机默认使用的DNS服务器的地址信息,对该文件
所做的修改会立即生效,Linux系统中最多可以指定3个(第三个以后会被忽略)不同
的DNS服务器地址,优先使用第1个DNS服务器,例如,执行以下操作可以指定默认
使用的两个DNS服务器地址分别位于202.106.0.20和202.106.148.1
vim /etc/resolv.conf
一般第一个nameserver指的是默认的搜索域
(2)本地主机映射文件:
/etc/hosts文件中记录着一份主机名与IP地址的映射关系表,一般用来保存经常需
要访问的主机信息,当访问一个未知域名时,先查找该文件中是否有相应的映射记录,
如果找不到再去向DNS服务器查询。
例如,若在/etc/hosts文件中添加119.75.218.79 www.baidu.com的映射记录,则当
访问网站 www.baidu.com时,将会直接向IP地址119.75.218.79发Web请求,省略了向
DNS服务器解析IP地址的过程。
vim /etc/hosts
对于经常访问的一些网站,可以通过在/etc/hosts文件中添加正确的映射记录,减少DNS查询的时间。