网络示意图
资源共享示意图
常见网络物理组件示意图
网络的特征
速度
成本
安全性
可扩展性
可靠性
拓扑
物理拓扑特性
总线拓扑:所有设备均可以接收到信号
星型拓扑:通过中心传输、单一故障点
扩展星型拓扑:比星型拓扑的复原能力更强
环拓扑:信号绕环传输、单一故障点
双环拓扑:信号沿相反方向传输、比单环的复原能力强
全网拓扑:容错能力强、实施成本高
部分网状拓扑:在容错能力与成本之间寻求平衡
OSI
应用层 Application 表示层 Presentation 会话层 Session 传输层 Transport 网络层 network 数据链路层 Data Link 物理层 Physical
物理层:二进制传输
为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范
数据链路层:访问介质
定义了如何格式化数据以便进行传输以及如何控制对网络的访问
支持错误检查
网络层:数据传输
路由数据包
选择传递数据的最佳路径
支持逻辑寻址和路径选择
传输层:传输问题
确保数据传输的可能性
建立、维护和终止虚拟电路
通过错误检测和恢复
信息流控制来保障可靠性
会话层:主机间通讯
建立、管理和终止在应用程序之间的会话
表示层:数据表示
确保接受系统可以读出该数据
格式化数据
构建数据
协商用于应用层的数据传输语法
提供加密
应用层:网络进程访问应用层
为应用层程序进程(例如:电子邮件、文件传输和终端仿真)提供网络服务
提供用户身份验证
OSI七层模型
数据封装图示
数据解封图示
PUD
PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位
物理层的 PDU是数据位 bit
数据链路层的 PDU是数据帧 frame
网络层的PDU是数据包 packet
传输层的 PDU是数据段 segment
其他更高层次的PDU是消息 message
三种通讯模式
单播:目标是一个 unicast
广播:目标是所有 broadcast
多播(组):目标是多个(加入组) multicast
注:
单工:单向传输 ------>
半双工:轮流双向传输----> <-----
全双工:同时双向传输 <---->
局域网的组成
计算机
个人主机
服务器
互连
媒介
NICs
网络设备
集线器
路由器
交换机
协议
Ethernet
IP
ARP
DHCP
UTP
100M实际用到的是12/36两组线
1000M用到的是12/36/45/78四组线
T568B:白橙 橙 白绿 蓝 白蓝 绿 白棕 棕
T568A:白绿 绿 白橙 蓝 白蓝 橙 白棕 棕
以太网帧结构
争用期的长度
以太网取 51.2 us 为争用期的长度。
对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。
以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
最短有效帧长:
如果发生冲突,就一定是在发送的前 64 字节之内。 由于一检测到冲突就立即中止发送,这时已经发送出去的数据
一定小于 64 字节。
以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。
以太网的MAC层:
在局域网中,硬件地址又称为物理地址,或 MAC 地址。
用集线器扩展局域网:
优点:使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信。扩大了局域网覆盖的地理范围。
缺点:碰撞域增大了,但总的吞吐量并未提高。如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
在数据链路层扩展局域网是使用网桥:
网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口 。
网桥的自学习算法:
网桥收到一帧后先进行自学习。查找转发表中与收到帧的源地址有无相匹配的项目。
如没有,就在转发表中增加一个项目(源地址、进入的接口和时间)。如有,则把原有的项目进行更新。
转发帧:查找转发表中与收到帧的目的地址有无相匹配的项目。
如没有,则通过所有其他接口(但进入网桥的接口除外)进行转发。
如有,则按转发表中给出的接口进行转发。
若转发表中给出的接口就是该帧进入网桥的接口,则应丢弃这个帧(因为这时不需要经过网桥进行转发)。
以太网交换机:
以太网交换机的每个接口都直接与主机相连,并且一般都工作在全双工方式。交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,进行无碰撞地传输数据。 以太网交换机由于使用了专用的交换结构芯片,其交换速率就较高。
对于普通 10 Mb/s 的共享式以太网,若共有 N 个用户,则每个用户占有的平均带宽只有总带宽(10 Mb/s)的 N 分之一。
使用以太网交换机时,虽然在每个接口到主机的带宽还是 10 Mb/s,但由于一个用户在通信时是独占而不是和其他网络用户共享传输媒体的带宽,因此对于拥有 N 对接口的交换机的总容量为 N´10 Mb/s。这正是交换机的最大优点。
虚拟局域网VLAN:
虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组。这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN。虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
VLAN数据帧
VLAN数据帧图解
字段 长度 含义 Destination address 6字节 目的MAC地址。 Source address 6字节 源MAC地址。 Type 2字节 长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。 PRI 3比特 Priority,长度为3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。用于当阻塞时,优先发送优先级高的数据包。如果设置用户优先级,但是没有VLANID,则VLANID必须设置为0x000。 CFI 1比特 CFI (Canonical Format Indicator),长度为1比特,表示MAC地址是否是经典格式。CFI为0说明是标准格式,CFI为1表示为非标准格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。 VID 12比特 LAN ID,长度为12比特,表示该帧所属的VLAN。在VRP中,可配置的VLAN ID取值范围为1~4094。0和4095协议中规定为保留的VLAN ID。三种类型:Untagged帧:VID 不计、Priority-tagged帧:VID为 0x000、VLAN-tagged帧:VID范围0~4095三个特殊的VID:0x000:设置优先级但无VID、0x001:缺省VID、0xFFF:预留VID Length/Type 2字节 指后续数据的字节长度,但不包括CRC检验码。 Data 42~1500字节 负载(可能包含填充位)。 CRC 4字节 用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。
TCP/IP 协议栈
Transmission Control Protocol/Internet Protocol
传输控制协议/因特网互联协议
TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议
最早发源于1969年美国国防部(缩写为DoD)的因特网的前身ARPA网项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护
共定义了四层
和OSI参考模型的分层有对应关系
TCP/IP 协议栈和 OSI 模型
可靠性vs高效性
可靠性 最大传输 链接类型 有线连接 无线连接 协议 TCP UDP 排序 Yes No 用途 E-mail、File sharing、Downloading Voice streaming、Video streaming
TCP特性
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
更多关于tcp的内核参数,可参看man 7 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报文段称为结束报文段
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value * Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值
校验和:提供额外的可靠性
紧急指针:标记紧急数据在数据字段中的位置
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
常见选项:
最大报文段长度:Maxium Segment Size,MSS,通常1460字节
窗口扩大:Window Scale
时间戳: Timestamps
关于三次握手和四次挥手详解
链接: 这里建议参考我的另一篇博客-点击跳转 .