- 网络基本概念
- OSI网络分层模型
- 网络设备
- TCP/IP协议栈
一、网络基本概念:
-
网络应用程序对网络的影响
- 批处理程序,无需人机交互,带宽很重要
- 交互应用程序,人机交互频繁,响应很重要
- 实时应用程序,人与人的交互,端到端的延时很重要
网络的特征:速度、成本、安全性、可用性、可扩展性、可靠性、拓扑
-
网络的物理拓扑:描述了物理设备的布线方式
- 总线拓扑:所有设备均可接收信号
- 环状拓扑:信号绕环传输、单一故障点
- 星型拓扑:通过中心点传输、单一故障点
- 网状拓扑:容错能力强、实施成本高
网络的逻辑拓扑:描述了信息在网络中的流动方式
二、OSI网络分层模型:
- 网络分层的意义:降低复杂性、标准化接口、简化模块化设计、确保技术的互操作性、加快发展速度、简化教学
(一)OSI模型的七层结构:
- 物理层:为启动、维护以及关闭物理链路定义了电气、机械、过程和功能规范,负责二进制信息的传输
- 数据链路层:定义如何格式化数据以便进行传输以及如何控制对数据的访问,支持错误检测,用MAC地址访问介质
- 网络层:路由数据包,支持逻辑寻址和路径选择,负责提供逻辑地址
- 传输层:可靠与不可靠的传输,错误检测和恢复,信息流控制来保障可靠性
- 会话层:建立、管理、终止应用程序之间的会话,负责主机间的通信
- 表示层:构建、格式化数据,负责数据表示
- 应用层:为应用程序进程提供网络服务,提供用户身份验证
(二)数据的封装、解封、对等通信
封装:发送端数据从应用层向下每经过一层添加相应的报头,在数据链路层同时增加报头和校验信息,通过物理层将二进制信息传输至接收端
解封:从接收端物理层接收到数据后,在数据链路层删除报头和校验信息,向上每一层删除相应的报头,最终获得发送端发来的数据
-
PDU(协议数据单元):对等层次之间传递的数据单位
- 物理层的PDU: bit 数据位
- 数据链路层的PDU: frame 数据帧
- 传输层的PDU: packet 数据包
- 网络层的PDU: segment 数据段
- 更高层次的PDU: message 消息
(三)三种通讯模式:单播、广播、组播
- 单播:主机间“一对一”通信
- 广播:主机间“一对所有”通信
- 组播:主机间“一对一组”通信
三、网络设备:
(一)网络线缆和接口
- 非屏蔽双绞线UTP (unshielded twisted-pair cable)
- T568A:绿白、绿、橙白、蓝、蓝白、橙、棕白、棕
- T568B:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕
- 100M实际使用12/36组线
- 1000M实际使用12/36/45/78组线
- 接头:RJ-45
- UTP直通线和交叉线
- 直通线:线缆两端接头排线遵循相同线序(两端都是T568A或者T568B)
- 交叉线:线缆两端接头排线各遵循T568A和T568B两种标准之一(一端为T568A,则另一端必须为T568B)
- 同类设备相连用交叉线,不同类设备相连用直通线,但现在都能够自动识别并翻转,交叉线使用情况变少
(二)网络适配器(网卡)
现在的网卡都是以太网卡
以太网应遵循802.3标准,由于802.3标准的帧结构存在缺陷,目前以太网第二代(Ethernet II)中没有使用完全按照标准要求的帧格式
-
以太网帧格式:
- 前导码(preamble):8Byte
- 目的MAC地址:6Byte
- 源MAC地址:6Byte
- 类型:2Byte
- 数据:46-1500Byte
- 帧校验序列:4Byte
-
MAC地址格式:
- 高24位:IEEE给不同厂商分配的代码,称为组织唯一标识符
- 低24位:各厂商自行分配,称为扩展标识符
-
CSMA/CD 冲突检测的载波侦听多路访问
- 传统以太网中共享传输介质,使用此技术
- 工作方式:先听后发,边发边听,冲突停发,随机延迟后重发
(三)集线器(Hub)
工作于物理层
采用广播方式转发,所有端口在一个冲突域中
工作特点:共享带宽、半双工
(四)交换机
工作于数据链路层
通过端口隔离了网络冲突域
工作特点:每个端口占一个带宽,一般工作在全双工模式下
交换机监听数据帧中源MAC地址,学习MAC,建立MAC表
对于未知MAC地址,交换机将转发到除接收该帧的端口之外的所有端口
当交换机接到一个数据帧时,如果该帧的目的位于接收端口所在网段上,它就过滤掉该数据帧;如果目的MAC地址在位于另外一个端口,网桥就将该帧转发到该端口
当交换机接到广播帧时候,它立即转发到除接收端口之外的所有其他端口
(五)路由器
分割广播域
选择路由表中到达目标的最佳路径
维护和检查路由信息(路由表)
链接广域网
(六)虚拟局域网
特点:分割广播域、安全、灵活管理
按照端口分组划分
四、TCP/IP协议栈
TCP(Transmission Control Protocol): 传输控制协议
IP(Internet Protocol): 因特网互联协议TCP/IP是一个协议栈,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议
(一)TCP/IP协议栈
分层结构,共定义了四层:网络访问层、Internet层、传输层、应用层
-
与OSI参考模型的对应关系
- OSI模型物理层和数据链路层合并为TCP/IP中的网络访问层
- OSI模型网络层改称TCP/IP中的Internet层
- OSI模型传输层在TCP/IP中不变
- OSI模型会话层、表示层、应用层合并为TCP/IP中的应用层
(二) TCP/IP协议的应用层:
FTP、SMTP、Telnet、SNMP、DNS等协议
(三) TCP/IP协议的传输层:
- 传输层主要负责工作:多路会话、成段、流量控制、面向连接、可靠连接,后三项视具体协议能否提供相应功能
(1) TCP协议:
1.TCP协议的特点:
工作在传输层,面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
2.TCP首部结构:20-60字节
源端口、目标端口:通过端口进行进程间通信,源端口、目标端口用16位表示,可推算计算机的端口个数为2^16个
序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号序列号由32位表示
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号,由32位表示
数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出TCP 报文段的数据起始处距离TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
ACK:表示前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
窗口大小:表示现在充许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,用16位表示
3.端口:16位表示,表示范围0至65535
0-1023:系统端口或特权端口(仅管理员可用),永久的分配给固定的系统应用使用,如:22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-49151:用户端口或注册端口,分配给程序注册为某应用使用,如:
3306/tcp(mysql), 11211/tcp/udp(memcached)49152-65535:动态端口或私有端口,客户端程序随机使用的端口
linux系统动态端口范围的定义:cat /proc/sys/net/ipv4/ip_local_port_range
4.TCP三次握手
说明:
(1)客户机初始化TCP连接,向服务器发送一个SYN=1请求
(2)服务器创建一个侦听套接字,进入LISTEN状态
(3)服务器接收到SYN,发送SYN=1和ACK=1同意连接请求
(4)客户机接收到服务器发送的SYN和ACK,进入ESTABLISHED状态,并回复服务器ACK=1
(5)服务器接到客户机的ACK进入ESTABLISHED状态,客户机和服务器成功连接,开始传送数据
5.TCP四次挥手
说明:
(1)客户机进程准备关闭连接,向服务器发送一个FIN=1请求,进入FINAL-WAIT-1状态
(2)服务器接收到FIN后,进入CLOSE-WAIT状态,回复客户机ACK=1确认关闭连接,并通知应用进程
(3)客户机接收到服务器的ACK后,进入FINAL-WAIT-2状态
(4)服务器进程同意关闭连接,进入LAST-ACK状态,并向客户机发送FIN=1和ACK=1请求关闭连接
(5)客户机接收到服务器的FIN和ACK后,进入TIME-WAIT状态,向服务器发送ACK=1,并在一定时间后自动进入CLOSED状态
(6)服务器接收到LAST-ACK后,进入CLOSED状态
6.有限状态机
CLOSED 没有任何连接状态
LISTEN 侦听状态,等待来自远方TCP端口的连接请求
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认
7.TCP超时重传
TCP为每一个报文维护一个重传定时器,报文发送时开启计时,若超过时间未有应答,则重发报文并将计时器时间重置
-
TCP重传策略:下次重传时间如何选择,最多执行多少次重传
- 与TCP超时重传相关的两个内核参数:
cat /proc/sys/net/ipv4/tcp_retries1 //指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
cat /proc/sys/net/ipv4/tcp_retries2 //指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)
8.TCP固定窗口和滑动窗口
固定窗口:每次发送的报文数量相同
滑动窗口:接收方会告诉发送方下次发送的报文数量
9.TCP拥塞控制
功能:提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性
拥塞控制的四个部分:慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast retransmit)和快速恢复(fast recovery)
linux当前使用的拥塞算法:
cat /proc/sys/net/ipv4/tcp_congestion_control
(2)UDP(User Datagram Protocol)协议 :
1.UDP协议的特点
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
2.UDP首部结构
源端口:16位
目的端口:16位
数据报长度:16位
校验值:16位
(四)TCP/IP协议的Internet层
-
Internet层的主要协议:
IP(Internet Protocol)
ICMP(Internet Control Message Protocol):报告错误、交换受限控制和状态信息
ARP(Address Resolution Protocol) :根据IP地址获取MAC地址
RARP(Reverse Address Resolution Protocol):根据MAC地址获取IP地址