计算机网络简介
计算机网络
通常也简称网络,是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享和信息传递的系统。简单的说即连接两台或多台计算机进行通信的系统。
网络的拓扑
总线型
环状型
双环型
星型
扩展的星型
部分网状型
全网状型
网络通信模式:
单播:主机之间“一对一”的通讯模式
组播:主机之间“一对一组”的通讯模式
广播:主机之间“一对所有”的通讯模式
网络从范围可划分:
局域网:(Local Area Network),简称LAN,是指在某一区域内由多台计算机互联成的计算机组。
广域网:(Wide Area Network),简称WAN,是一种跨越大的、地域性的计算机网络的集合。
网络中的常用概念:
冲突域:如果一天机器发数据,另一台也在发数据,数据冲突了,那么这俩台机器在同一冲突域
广播域:一个主机向外发广播,其他主机收到广播就说明在一个广播域中,基于广播机制通信
OSI七层参考模型
开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。
七:应用层(Application Layer):提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。
六:表示层(Presentation Layer):把数据转换为能与接收者的系统格式兼容并适合传输的格式。
五:会话层(Session Layer):负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。
四:传输层(Transport Layer):把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
三:网络层(Network Layer):决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络数据。例如:互联网协议(IP)等。
二:数据链路层(Data Link Layer):负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
一:物理层(Physical Layer):在局部局域网上传送数据帧(data frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等。
PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位
物理层的 PDU是-------------数据位 bit
数据链路层的 PDU是-------数据帧 frame
网络层的PDU是--------------数据包 packet
传输层的 PDU是-------------数据段 segment
其他更高层次的PDU是-----消息 message
TCP/IP协议栈
是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(英语:TCP/IP Protocol Stack)。这些协议最早发源于美国国防部(缩写为DoD)的ARPA网项目,因此也被称作DoD模型(DoD Model)。
一:网络接口层(Network Access)
对应OSI模型的物理层和数据链路层,下面总结一下工作在此层的设备及协议:
工作在网络接口层的设备:
1、线缆
网络传输线缆有双绞线,同轴电缆和光纤,现在同轴电缆已经被淘汰了;双绞线的传输距离在100m以内,同轴电缆(细):<185m,同轴电缆(粗):<500m
双绞线可分为屏蔽式和非屏蔽式,屏蔽式双绞线孔干饶更好
双绞线线序:
T568A:绿白,绿-橙白-蓝-蓝白-橙-棕白-棕
T568B:橙白,橙-绿白-蓝-蓝白-绿-棕白-棕
双绞线还分为直通线和交叉线,相同类设备连接用交叉线,不同类设备用直连线,不过现在的网络设备可以只能识别收发
RJ-45:
如果速度在100Mdps以内使用1236线来传输,如果超过100Mdps到1000Mdps时使用全部线路传输,如果大于1000Mdps时使用八条线路全双工模式传输。
GBIC是Giga Bitrate Interface Converter的缩写,是将千兆位电信号转换为光信号的接口器件。
2、集线器(Hub)
集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
集线器工作在物理层,不会记录MAC地址,hub中的设备共享网络带宽,半双工工作模式。
3、以太网桥
网桥工作在OSI模型中的物理层和数据链路层。
网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。
以太网桥可以监听和学习数据帧中的源MAC地址,建立MAC地址表,如果是未知的目标MAC则转发到监听端口外的所有端口,如果是MAC表中有的目标地址则会直接转发到相应的端口。
网桥转发所有广播报文,可以隔离冲突域,但是无法隔离广播域
4、交换机
交换机的工作原理和以太网桥相同。但是比网桥有更高级的功能
二层交换机工作于数据链路层。交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。
交换机端口的工作模式:Access(普通模式),Multi(多vlan模式),Trunk(中继模式)
trunk模式的端口用于交换机与交换机
Access多用于接入终端设备,如PC机、服务器、打印服务器等
工作在网络接口层的协议:
1、LAN标准
IEEE:电气电子工程师学会
IEEE 802.3──带冲突检测的载波侦听多路访问协议CSMA/CD(半双工以太网)
IEEE 802.3u──快速以太网
IEEE 802.3z──千兆以太网
IEEE 802.3ae──万兆以太网
2、以太网帧(Ethernet Frame)的结构
Preamble:前导信息
Destination Address:目标MAC地址
Source Address:源MAC地址
Type:上层协议类型
Data:数据
FCS:校验位
3、MAC地址
物理地址(Physical Address),它是一个用来确认网络设备位置的地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
MAC地址共48位(6个字节),以十六进制表示。前24位由IEEE决定如何分配,后24位由实际生产该网络设备的厂商自行指定。ff:ff:ff:ff:ff:ff则作为广播地址。
4、CSMA/CD
冲突检测的载波侦听多路访问
如果发现与其他机器发数据冲突了就等待一段时间再重新发,这种机制为CSMA/CD
5、STP
生成树协议(英语:Spanning Tree Protocol,STP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源。
STP的工作过程如下:首先进行根网桥的选举,其依据是网桥优先级(bridge priority)和MAC地址组合生成的桥ID,桥ID最小的网桥将成为网络中的根桥(bridge root)。在此基础上,计算每个节点到根桥的距离,并由这些路径得到各冗余链路的代价,选择最小的成为通信路径(相应的端口状态变为forwarding),其它的就成为备份路径(相应的端口状态变为blocking)。STP生成过程中的通信任务由BPDU完成,这种数据包又分为包含配置信息的配置BPDU(其大小不超过35B)和包含拓扑变化信息的通知BPDU(其长度不超过4B)。
6、虚拟局域网(VLAN)
是一种建构于局域网交换技术(LAN Switch)的网络管理的技术,网管人员可以借此通过控制交换机有效分派出入局域网的数据包到正确的出入端口,达到对不同实体局域网中的设备进行逻辑分群(Grouping)管理,并降低局域网内大量数据流通时,因无用数据包过多导致拥塞的问题,以及提升局域网的信息安全保障。
VLAN的特点:
隔离广播域
带宽利用
降低延迟
安全性提高
管理灵活
二:网络互联层(Internet)
工作在网络互联层的网络设备
路由器(Router)
提供路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。
路由工作在OSI模型的网络层
把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成。
路由器的负责:
分隔广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
连接广域网
工作在网络互联层的网络协议
1、地址解析协议(ARP)
是通过解析网络层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议。
例如要向局域网内的指定主机发一个包:
从上层到下层依次封装包;
ARP表中没有对应IP的主机的MAC地址;
ARP广播发送自己的封装有自己的MAC,IP,对方的IP的ARP包;
在局域网中的各主机,接受到广播报文后如果不是自己的IP则丢弃;如果是自己的IP则记录下报文中的IP及对应的MAC地址,并且回应一条封装有自己的MAC的包;
当收到了指定主机的回应ARP包后说明已经拿到了对方的MAC地址;记录ARP表,并且将帧头填好,发送。
2、反向地址解析协议(RARP)
RARP使用与ARP相同的报头结构,作用与ARP相反。RARP用于将MAC地址转换为IP地址。
例:在网卡PXE启动时想要和其他服务器通信,但是没有IP地址,则会将自己的MAC地址发送到网络上请求DHCP服务器分配自己一个IP地址。这里就用到了RARP协议。
3、互联网协议(IP)Internet Protocol
IP是在TCP/IP协议族中网络层的主要协议,任务仅仅是根据源主机和目的主机的地址来传送数据。为此目的,IP定义了寻址方法和数据报的封装结构。第一个架构的主要版本,现在称为IPv4,仍然是最主要的互联网协议,尽管世界各地正在积极部署IPv6。
特性:
运行于 OSI 网络层
面向无连接的协议
独立处理数据包
分层编址
尽力而为传输
无数据恢复功能
版本:占4位,指 IP 协议的版本目前的IP协议版本号为4
首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节
区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用
总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535 字节.总长度必须不超过最大传送单元 MTU
标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1, 也用于数据包分片,在同一个包的若干分片中,该值是相同的
标志(flag):占3位,目前只有后两位有意义
DF:Don‘t Fragment,中间的一位,只有当 DF=0 时才允许分片
MF:More Fragment,最高位,MF=1表示后面还有分片。MF=0 表示最后一个分片
片偏移:占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字节,分别记录源地址和目的地址
4、路由(routeing)
就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的第三层即网络层。
路由的分类:
主机路由:到某个主机的路
网络路由:到某个网段的路
默认路由:如果前边没有匹配到的路,则选择默认路由
路由的优先级:路由的精度越高,路由条目越详细,优先级越高。
三:传输层(Transport)
1、传输控制协议(TCP)Transmission Control Protocol
是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能
TCP的工作特性:
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
TCP的包头
端口号:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。
源端口和目的端口用16bit标识,最大标识2^16=65536 个端口
0-1023:系统端口
1024-29151:普通用户端口
49152-65535:客户段随机端口
常见应用的端口号
http 80
https 443
ftp 20/21
dns 53
tftp 69
smtp25
pop3 110
imap 143
telnet 23
ssh 22
mysql 3306
oracle 1521
sql server 1433
序列号(序号):表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始。
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号
数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgentpointer)只有当URG=1时才有效;
ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当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报文段称为结束报文段。
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量
固定窗口:每次固定发送一定数量的包
滑动窗口:根据双方的性能动态调整每次发送包的数量
校验和:提供额外的可靠性
紧急指针:标记紧急数据在数据字段中的位置
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
常见选项:
最大报文段长度:Maxium Segment Size,MSS
指明自己期望对方发送TCP报文段时那个数据字段的长度。默认是536字节。数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。MSS不宜设的太大也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传,这些也都会使开销增大。因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS写入这一字段。 MSS只出现在SYN报文中。即:MSS出现在SYN=1的报文段中。
窗口扩大:Windows Scaling
为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是65535。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口来满足性能和吞吐率,所以产生了这个窗口扩大选项。
时间戳:Timestamps
可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中,当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可以说可以用来区分相同序列号的不同报文。因为序列号用32为表示,每2^32个序列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文。
三次握手
- 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
- 第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三次握手的总体介绍。
四次分手
当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次分手”。
- 第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
- 第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
- 第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
- 第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
至此,TCP的四次分手就这么愉快的完成了。
TCP的有限状态机
- CLOSED 没有任何连接状态
- LISTEN 侦听状态,等待来自远方TCP端口的连接请求
- SYN-SENT 在发送连接请求后,等待对方确认
- SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
- ESTABLISHED 代表传输连接建立,双方进入数据传送状态
- FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
- FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
- TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
- CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
- LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
- CLOSING 双方同时尝试关闭传输连接,等待对方确认
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(一般对应13~30min)
TCP的拥塞控制
网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性能就会变坏。这种情况就叫做拥塞。TCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性。即所谓的拥塞控制;
TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fastretransmit)和快速恢复(fast recovery)。拥塞控制算法在Linux下有多种实现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了上述四个部分。
当前所使用的拥塞控制算法 /proc/sys/net/ipv4/tcp_congestion_control
2、用户数据报协议(UDP)User Datagram Protocol
是一个简单的面向数据报的传输层协议
UDP特性:
- 工作在传输层
- 提供不可靠的网络访问
- 非面向连接协议
- 有限的错误检查
- 传输性能高
- 无数据恢复特性
UDP包头:
3、互联网控制消息协议(ICMP)Internet Control Message Protocol
是互联网协议族的核心协议之一。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。
ICMP依靠IP来完成它的任务,它是IP的主要部分。它与传输协议(如TCP和UDP)显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了ping和traceroute这两个特别的例子。
四:应用层(Application)
TCP/IP协议栈中把ISO七层模型中的会话层,表示层,应用层全部合为应用层。
运行在TCP协议上的协议:
HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。
POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
运行在UDP协议上的协议:
BOOTP(Boot Protocol,启动协议),应用于无盘设备。
NTP(Network Time Protocol,网络时间协议),用于网络同步。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
基本网络配置
将Linux主机接入到网络,需要配置网络相关设置。
一般包括如下内容:
主机名
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
配置网络命令
ifconfig
ifconfig [interface]
ifconfig -a
ifconfig IFACE [up|down] 启动|关闭网卡
ifconfig interface [aftype] options | address
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMAKS
*立即生效
启用混杂模式:[ - ]promisc
route路由器管理命令
-n 查看
add 添加
route [ -net | -host ] target [ netmask Nm ] [ gw GW ] [ [dev] if ]
del 删除
netstat显示网络连接
netstat [ --tcp|-t ] [ --udp|-u ] [ --raw|-w ] [ --listening|-l ] [ --all|-a ] [ --numeric|-n ] [ --extend|-e [--extend|-e ] ] [ --program|-p ]
-t tcp协议相关
-u udp协议相关
-w raw socket相关
-l 处于监听状态
-a 所有状态
-n 以数字显示IP和端口
-e 扩展格式
-p 显示相关进程及PID
netstat{--route|-r} [--numeric|-n]
-r 显示内核路由表
-n 数字格式
-i 显示接口统计数据
常用组合
-tan,-uan,-tnl,-unl
ip配置网络属性
ip -show / manipulate routing,devices,policy routing and tunnels
ip [ OPTIONS ] OBJECT (COMMAND | help)
OBJECT:={link| addr | rote}
link object
ip link-network device configuration (数据链路层) 有配置文件才可以启动和终止相应网卡
set dev IFACE
可设置属性
up and down:激活或禁用指定接口
show [dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip addr -protocol address management (网络层地址)
ip addr {add | del} IFADDR dev STRING
[label LABEL]:添加地址是指定网卡别名
[scope {global |link |host}]:指明作用域
global:全局可用:
link:仅链接可用
host:本级可用
[broadcast ADDRESS]:指明广播地址
ip address show -look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
ip address flush - flush protocol addresses
使用格式同show
ip route -routing table management
添加路由:iproute add
iproute add TARGET via GW dev IFACE srcSOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1
添加网关:iproute add default via GW dev IFACE
iproute add default via 172.16.0.1
删除路由:iproute delete
iproute del TARGET
显示路由:iproute show|list
清空路由表:iproute flush[dev IFACE] [via PREFIX]
iproute flush dev eth0
ss命令
格式:ss[OPTION]... [FILTER]
netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unixsock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
常用组合:
-tan, -tanl, -tanlp, -uan
网络配置文件
DEVICE:此配置文件应用到的设备
HWADDR:对应的设备的MAC地址
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS为“no”
ONBOOT:在系统引导时是否激活此设备
TYPE:接口类型;常见有的Ethernet, Bridge
UUID:设备的惟一标识
IPADDR:指明IP地址
NETMASK:子网掩码
GATEWAY: 默认网关
DNS1:第一个DNS服务器指向
DNS2:第二个DNS服务器指向
USERCTL:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
nmcli命令
Bonding和Team
Bonding
绑定:将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。
工作模式:
mode 0:balance-rr 轮调策略:多张网卡可以轮流发数据包,实现负载均衡的功能
mode 1:active-backup 主备策略:其中active网卡的发数据包,其他备用
mode 3:broadcast 广播策略:每个网卡都会发一份包
Team
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量。
工作模式:runner
broadcast:广播
roundrobin:轮调
activebackup:主备
Bridge
桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D