1.什么是网络?
实现主机之间通信交流
2.两台计算机之间如何实现通信?
01 实现主机之间通信交流需要传输介质
导向式
(1)双绞线
a 正双绞线:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕 插交换机
b 反双绞线:绿白、绿、橙白、蓝、蓝白、橙、棕白、棕 双机互联线
(2) 光纤
(3) 同轴
非导向
蓝牙 红外(接触)微波 卫星 量子等
02. 实现主机之间通讯需要有网卡设备
网卡设备作用:
1. 可以将二进制信息转换为高低电压信息 调制过程
2. 可以将高低电压信息转换为二进制信息 解调过程
03. 实现主机之间通讯需要有协商过程 speed 100M
100Mbps == ps 每秒钟 传输多少 bit(01 二进制信息)的数据
== 每秒种传输 100M个bit == 100000k个bit == 100000000个bit
网络中传输数据的最小单位 bit 1bit=1/8Byte 100Mb/8=12.5MB~~10MB ~ 2M
系统中存储数据的最小单位 Byte 1Byte=8bit
3.多台主机之间如何进行通讯
01. 需要利用交换机: 实现局域网内多台主机之间的通讯
02. 发数据信息需要有数据包结构
目标信息+源信息(mac)+数据信息==基本的数据包结构
03. 在一个局域网环境中, 利用mac(物理地址)地址标识主机身份信息
物理地址是全球唯一的, 不能出现重复情况
利用十六进制信息进行表示 0 1 2 - 9 10 11 12 13 14 15
04. 利用交换机进行通讯需要借助广播方式
交换网络缺点: 当交换网络主机数量过多, 会产生广播风暴问题, 导致影响主机性能
4.多个局域网(交换网络)之间如何实现通讯
01. 需要利用路由器: 实现局域网之间主机通讯, 并且可以隔离广播信息
02. 发数据信息需要有数据包结构
目标信息+源信息(IP)+数据信息==基本的数据包结构
03. 在多个局域网环境中, 利用IP(逻辑地址)地址标识主机身份信息
逻辑地址是全球唯一的? 不能出现重复情况?
利用十进制信息进行标识
04. 利用路由器查询路由表信息进行判断
实现不同局域网之间可以经过路由器通讯, 相同局域网数据经过路由器会进行隔离
05. 需要借助路由协议
1) 静态路由协议: 手动在路由表中添加路由条目信息
优点: 通讯效率较高
缺点: 操作配置复杂度较高
2) 动态路由协议: 自动在路由表中生成路由条目信息
优点: 操作配置简单方便
缺点: 路由条目学习过程(路由收敛过程)会耗费时间, 造成通讯效率较低
逻辑的架构模型:
OSI7层模型:
1) ISO国际标准化组织
2) 定义一些标准规范
3) 层次模型有什么: 低-高
物理层
定义一些物理连接介质的标准
常见的标准 RJ-11 RJ-45 买那个厂商提供RJ-45接口标准的 水晶头
水晶头 水晶/塑料/接触片/镀金的/纯铜/镀铜/ 网线
数据链路层
常见的标准MAC地址 二级网络 交换机
负责将同一局域网中不同主机的数据进行传输--交换机-2层设备
网络层
路由协议 负责将不同网络中的数据进行传输--路由器-3层设备
传输层
分段 重组
TCP稳定传输 UDP传输的方式
会话层
建立 维护会话
Linux C /Unix C语言编程 控制包数据
表示层
加密/解密 压缩处理/解压缩
文件的格式 类型 PNG JPEG MPEG AVI MKV MP4 TS等、加密的处理。
应用层
操作系统上装的程序 数据
OSI 7层模型中数据的传输结构
应用层 Hello World (表示层 TEXT 会话层)
传输层 报文消息头 TCP 字段 segment
网络层 IP地址的报文的消息头 IP 包 packet
链路层 添加一个以太信息 帧 frame
物理层 网卡 010101010101 电信号
7层模型解包的一个过程
物理层 网卡 电信号 0101010101 2进制的信息
链路层 以太信息
网络层 IP
传输层 TCP
会话层 SOCKET
表示层 类型 TEXT JPEG PNG等
应用层 向操作系统要数据 Hello World
TCP/IP
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的 可靠 的、基于字节流的传输层通信协议
UDP是User Datagram Protocol的简称, 中文名是用户数据报协议,是一种无连接的传输层协议
TCP 传输控制协议 面向连接的协议(同步传输) 可靠传输协议 传输效率低 na
UDP用户报文协议 无连接协议 (异步传输) 不可靠传输协议 传输效率高
系统中:
异步传输数据: 类似离线传输 不需要进行确认
优点: 传输效率较高
缺点: 安全性不高
同步传输数据: 类似在线传输 需要进行确认
优点: 安全性高
缺点: 传输效率较低
1.TCP协议中重要原理
1) TCP三次握手过程-- 完成网络连接建立
TCP报文结构:
a 源端口地址 返回数据包目标端口地址
b 目标端口地址 要和服务端哪个网络服务建立连接
端口的数值范围: 1-65535 是通过报文结构获知的
根据报文结构 源端口和目标端口各占用16个bit
公式: 2的n次方 n占用了多少比特
占用了1bit
端口范围: 0 1 2种 2的1次方=2 0-1
占用了2bit
端口范围: 00(0) 01(1) 10(2) 11(3) 4种 2的2次方=4 0-3
占用了3bit
端口范围: 000(0) 001(1) 010(2) 011(3) 100(4) 101(5) 110(6) 111(7) 8种 2的3次方=8 0-7
占用了16bit
端口范围: 2的16次方=65536 0-65535 --- 1-65535
PS: 一般0号端口不被使用
c Sequence Number(序列号)
d Acknowledgement Number(确认号)
特殊6bit作为报文结构中的控制位:
syn(连接) --- 请求建立连接控制字段
ack(确认) --- 表示确认控制字段
fin(断开) --- 请求断开连接控制字段
说明: 控制字段数值置为1表示控制功能开启 默认为0
三次握手详细过程:
第一次握手: 发送TCP数据报文 客户端 -- 服务端
a TCP数据报文中,需要将syn控制字段改为1
b TCP数据报文中,需要将seq序列号信息发出 seq=x
第二次握手: 发送TCP数据报文 服务端 -- 客户端
a TCP数据报文中,需要将ack控制字段改为1
b TCP数据报文中,同时将syn控制字段改为1
c TCP数据报文中,同时将ack确认号信息发出 ack=x+1
d TCP数据报文中,同时将seq序列号信息发出 seq=y
第三次握手: 发送TCP数据报文 客户端 -- 服务端
a TCP数据报文中,需要将ack控制字段改为1
b TCP数据报文中,同时将ack确认号信息发出 ack=y+1
c TCP数据报文中,同时将seq序列号信息发出 seq=x+1
2.TCP四次挥手过程 -- 完成网络连接断开
第一次挥手: 发送TCP数据报文 客户端 -- 服务端
a TCP数据报文中, 需要将fin控制字段改为1
b TCP数据报文中, 同时将ack控制字段改为1
也包含seq和ack确认号信息
第二次挥手: 发送TCP数据报文 服务端 -- 客户端
a TCP数据报文中, 需要将ack控制字段改为1
第三次挥手: 发送TCP数据报文 服务端 -- 客户端
a TCP数据报文中, 需要将ack控制字段改为1
b TCP数据报文中, 同时将fin控制字段改为1
第四次挥手: 发送TCP数据报文 客户端 -- 服务端
a TCP数据报文中, 需要将ack控制字段改为1
扩展: 如何抓取网络数据包(抓包软件)
windows: Wireshark
linux: tcpdump命令
3. TCP 11种状态集转换(了解 -- 架构层面)
1) 以后可以更好排查系统网络问题
2) 以后学习网络编程会有帮助
TCP三次握手过程: 服务端和客户端状态变化(5种状态变化)
第一历程: 初始状态信息
客户端状态为: closed
服务端状态为: closed
第二历程: 服务端开启相应服务
服务端状态为: closed -- LISTEN
第三历程: 发送建立连接请求(客户端) == 三次握手第一次
客户端发送syn信息
客户端状态为: closed -- syn_sent
第四历程: 接收建立连接请求(服务端) == 三次握手第二次
服务端接受syn信息, 发送确认以及请求建立连接信息(ack syn)
服务端状态为: LISTEN -- syn_rcvd
第五历程: 发送最后确认信息(客户端) == 三次握手第三次
客户端发送ack信息
客户端状态为: syn_sent -- established
第六历程: 接收最后确认信息(服务端)
服务端接收ack信息
服务端状态为: syn_rcvd -- established
结论: 只有服务端和客户端都统一处于established连接建立状态, 才能正常传输数据信息
TCP四次挥手过程: 服务端和客户端状态变化(5种状态变化)
第一个历程: 初始状态信息
客户端状态为: established
服务端状态为: established
第二个历程: 发送断开连接请求(客户端) == 四次挥手第一次
客户端发送fin请求断开连接字段
客户端状态为: established -- fin_wait1
第三个历程: 接收断开连接请求(服务端) == 四次挥手第二次
服务端接受fin请求断开连接字段 发出确认信息(ack=1)
服务端状态为: established -- close_wait
第四个历程: 接收确认断开信息(客户端)
客户端接受服务端发出的确认信息(ack=1)
客户端状态为: fin_wait1 -- fin_wait2
第五个历程: 发送断开连接请求(服务端) == 四次挥手第三次
服务端发送fin请求断开连接字段 同时还会再次发送确认字段
服务端状态为: close_wait -- last_ack
第六个历程: 接收断开连接请求(客户端) 发送最后确认信息 == 四次挥手第四次
客户端接收断开连接请求 同时发送最后确认信息ack=1
客户端状态为: fin_wait2 -- time_wait (等时间 60s 90s 120s???)
第七个历程: 接收最后确认信息(服务端)
服务端状态为: last_ack -- closed
第八个历程: 等待时间结束
客户端状态为: time_wait -- closed
IP地址
1.在公网上Internet 上全球唯一的一个地址。
2、两个版本
IPv4 32位 占4个字节
IPv6 128位 占16个字节
3、用"."隔开 也叫点分
4、每一个分段是8位 2^8 = 256 用0~255区间来表示。
5、IP地址的组成
1、网络ID 每一个设备的网络ID唯一
2、主机ID
6、分类、 A B C D E
较为常见
A类
B类
C类
能放254个主机 192~223
组播
D类
不常见
E类
7、各类IP地址的私有IP地址段
A 10.0.0.x
B 172.16.0.x
C 192.168.0.x
8、特殊的IP地址
0.0.0.0 无意义 表示一个集合。
255.255.255.255 广播地址
127.0.0.1 本地地址 搭建本地服务
MySQL 3306
169.254 路由器 DHCP服务器 分配无效的IP地址
四、子网掩码
1、作用
主要用于子网的划分
或者让网络设备能够 识别一个IP地址段中的主机数是多少
2、掌握常见的网络的子网掩码
1、计算的规则
就是该网络类型的,主机位 ID 标识 0
A类 255.0.0.0
B类 255.225.0.0
C类 255.225.255.0