网络协议和管理

什么网络

资源共享的功能和优点
数据和应用程序
资源
网络存储
备份设备

常见的网络物理组件

网络应用程序
Web 浏览器(Chrome、IE、Firefox等)
即时消息(QQ、微信、钉钉等)
电子邮件(Outlook、foxmail 等)
协作(视频会议、VNC、Netmeeting、WebEx 等)
web网络服务(apache,nginx,IIS)
文件网络服务(ftp ,nfs,samba)
数据库服务( MySQL,MariaDB,MongoDB)
中间件服务(Tomcat,JBoss)
安全服务(Netfilter

用户应用程序对网络的影响

批处理应用程序
FTP、TFTP、库存更新
无需直接人工交互
带宽很重要,但并非关键性因素
交互式应用程序
库存查询、数据库更新
人机交互
因为用户需等待响应,所以响应时间很重要,但并非关键性因素,除非要等待很长时间
实时应用程序
VoIP、视频
人与人的交互
端到端的延时至关重要

网络的特征

速度
成本
安全性
可用性
可扩展性
可靠性
拓扑

物理拓扑分类

 

 


总线拓扑;所有设备可接收信号

星型拓扑;通过中心点传输,单一故障点

环拓扑

信号怀绕传输

单一故障点

 双环拓扑

信号沿相反方向传输
比单环的复原能力更强

全网状拓扑

容错能力强
实施成本高

部分网状拓扑
在容错能力与成本之间寻求平衡

OSI 模型的七层结构

 

 数据封装

数据解封装

PDU
PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位
物理层的 PDU是数据位 bit
数据链路层的 PDU是数据帧 frame
网络层的PDU是数据包 packet
传输层的 PDU是数据段 segment
其他更高层次的PDU是消息 messag

Ethernet Evolution

LAN标准

目前共有11个与局域网有关的标准,它们分别是:

  IEEE 802.1── 通用网络概念及网桥等

  IEEE 802.2── 逻辑链路控制等

  IEEE 802.3──CSMA/CD访问方法及物理层规定

  IEEE 802.4──ARCnet总线结构及访问方法,物理层规定

IEEE 802.5──Token Ring访问方法及物理层规定等

  IEEE 802.6── 城域网的访问方法及物理层规定

  IEEE 802.7── 宽带局域网

  IEEE 802.8── 光纤局域网(FDDI)

  IEEE 802.9── ISDN局域网

  IEEE 802.10── 网络的安全

  IEEE 802.11──无线局域网

Ethernet Frame结构

 

目标地址:此数据包的目标MAC地址。
源地址:此数据包的源MAC地址。
协议类型:上层协议,表示网络层使用的协议
数据:高层协议、数据和填充符,范围在46~1500字节。
FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏

 

 MAC地址

 

以太网桥

交换式以太网的优势
•扩展了网络带宽
•分割了网络冲突域,使网络冲突被限制在最小的范围内
•交换机作为更加智能的交换设备,能够提供更多用户所要求的功能:优先级、虚拟网、远程检测

已太网桥的工作原理

以太网桥监听数据帧中源MAC地址,学习MAC,建立MAC表
对于未知MAC地址,网桥将转发到除接收该帧的端口之外的所有端口
当网桥接到一个数据帧时,如果该帧的目的位于接收端口所在网段上,它就过滤掉该数据帧;如果目的MAC地址在位于另外一个端口,网桥就将该帧转发到该端口
当网桥接到广播帧时候,它立即转发到除接收端口之外的所有其他端口

路由器

 

 

为了实现路由,路由器需要做下列事情:
分隔广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
连接广域网

路由:把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成

 TCP/IP四层模型

 

TCP特性
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法

 TCP包头

源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个
序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号
数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字

URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

 

传输层通过port号,确定应用层协议
Port number:
tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路
0-65535
udp:User Datagram Protocol,无连接的协议
0-65535

TCP三次握手

三次握手
客户端向服务器端发送SYN包,客户端进入SYN_SEND状态。
服务器端收到客户端发送的包返回ACK+SYN包,服务器端进入SYN_RECV状态。
客户端收到服务器端返回的包再发回ACK包,客户端进入ESTABLISHED状态,服务器端收到包也进入ESTABLISHED
状态。

TCP四次挥手

四次挥手
客户端发送FIN包询问服务器端是否能断开,客户端进入FIN_WAIT_1状态。
服务器端收到客户端发送的包并返回ACK包,服务器端进入CLOSE_WAIT状态。
服务器端准备好断开后,发送FIN包给客户端,服务器端进入LAST_ACK状态。
客户端收到服务器端发送的包后返回ACK包,客户端进入TIME_WAIT状态,服务器端收到包后进入CLOSED状态

sync半连接和accept全连接队列

server端的半连接队列(syn队列)

在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包开设一个条目(服务端在接收到SYN包的时候,就已经创建了request_sock结构,存储在半连接队列中),该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包(会进行第二次握手发送SYN+ACK 的包加以确认)。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
该队列为SYN 队列,长度为 max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog) ,在机器的tcp_max_syn_backlog值在/proc/sys/net/ipv4/tcp_max_syn_backlog下配置。

 

server端的完全连接队列(accpet队列)

当第三次握手时,当server接收到ACK 报之后, 会进入一个新的叫 accept 的队列,该队列的长度为 min(backlog, somaxconn),默认情况下,somaxconn 的值为 128,表示最多有 129 的 ESTAB 的连接等待 accept(),而 backlog 的值则应该是由 int listen(int sockfd, int backlog) 中的第二个参数指定,listen 里面的 backlog 可以有我们的应用程序去定义的。

 TCP超时重传

异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务
TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略
与TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15

ARP

综上在跨网段通信过程中有以下过程:
1、判断地址是否同一网段
2、查询目的IP地址的mac

注意:

1ARP请求以广播发送、以单播回应

2路由器隔离广播。每一个网段都是独立的广播域
3跨越网段通信需要使用网关的mac地址

 

 

 

IP PDU 报头
版本:占4位,指 IP 协议的版本目前的IP协议版本号为4
首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节
区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下不使用
总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU
标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1, 也用于数据包分片,在同一个包的若干分片中,该值是相同的
标志(flag):占3位,目前只有后两位有意义

片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位
生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议
首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址:都各占4字节,分别记录源地址和目的地址

子网掩码的八位

动态主机配置协议DHCP

Linux网络配置文件

查看第一张网卡的网卡信息:

cat /etc/sysconfig/network-scripts/ifcfg-eth0
修改网卡名称

DNS配置文件

  查看DNS配置文件:

vi /etc/resolv.conf

Linux网络命令

网络环境操作

ifconfig命令

ifconfig:查看网络状态

关闭与启动网卡 

route命令

查看路由表:route -n

netstat命令

-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口
-e:扩展格式

-p: 显示相关进程及PID

常用组合:
-tan, -uan, -tnl, -unl

显示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式

ss命令

-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息

TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED

常见用法

ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt

网络配置文件
ONBOOT:在系统引导时是否激活此设备
TYPE:接口类型;常见有的Ethernet, Bridge
UUID:设备的惟一标识
IPADDR:指明IP地址
NETMASK:子网掩码
GATEWAY: 默认网关
DNS1:第一个DNS服务器指向
DNS2:第二个DNS服务器指向
USERCTL:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf

配置当前主机的主机名:

/etc/sysconfig/network

wget命令 

  wget 下载地址:下载命令

tcpdump命令:用于监听某一网卡下某一服务的数据包接收情况(截获数据包-抓包)

-i 指定监听的网卡
-nn 将数据包中的域名与服务转为IP和端口显示

/etc/hosts
本地主机名数据库和IP地址的映像
对小型独立网络有用
通常,在使用DNS前检查

 

 
posted @ 2019-06-22 15:25  凤溪潇潇  阅读(365)  评论(0编辑  收藏  举报