提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
**
OSI七层参考模型
**
一、网络是什么?
-
网络是由网络连接设备通过传输介质将网络终端设备连接起来,进行资源共享,信息传递的平台。
-
网络也是由边连接在一起的节点的集合,节点代表网络中的个体,边将网络中的个体连接起来。
网络连接设备 --路由器(连接互联网局域网和广域网的设备)、交换机、光猫
传输介质 --网线、光纤 、同轴电缆
网络终端设备 --电脑、手机、pad、电视
二、OSI七层参考模型
应用层:
通过人机交互来实现各种各样的服务
表示层:
编码 解码 加密 解密(把数据转化成能与接收者的系统格式兼容并适合传输的格式)
会话层:
发现 建立 维持 终止会话进程(负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接
传输层:
建立维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等等。
1.通过端口号来区分不同的服务
端口号范围0~65535
端口号分类:
静态端口号:0~1023—一个端口号对应
一个服务,呈永久绑定性关系
动态端口号:1024~65535—一个端口号
对应一个服务,呈暂时性绑定关系
0端口号:保留端口号—网络编程中使用—代表
所有端口号。
几个常用的端口号:
http --超文本传输协议 80 /8080
https --安全 443
域名系统 (DNS)— TCP/UDP 端口 53
http --超文本传输协议 80 /8080
2.提供可靠的传输
传输层常用的两个协议: TCP 和 UDP
-
TCP–传输控制协议–面向连接的可靠传输协议
TCP可靠的原因是因为存在特殊的机制:确认–重传
(主要作用)–排序–流控(辅助作用)TCP报头
首先,源端口与目的端口必不可少,没有这个数据就不知道发给那个应用。下来是报文序列号,为什么需要给报文编号呢,当然是解决数据的乱序问题,不编个号怎么确认那个数据是先来的那个是后到的。然后确认序列号,发出去的报文应该有个确认,不然我怎么知道对方收到没收到,如果没收到就应该重传,当然出现损坏也会重传,如果是职场人,凡事有个响应是必要的。TCP是一个可靠传输协议,他面临的网络环境可能很复杂,网络层是没有可靠性保证的,如果网络环境比较差,TCP作为靠谱协议他不能改变网络环境但是他可以通过算法和重传来保证数据传输可靠。
下来的数据偏移指的是首部长度,表示数据开始的地方离TCP段的起始处有多远。由于首部长度不固定,因此 数据偏移字段是必要的。以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节。Reserved,保留字段,必须填0。
接下来是一些状态位,syn表示发起一个连接,ack是确认,RST是重新连接,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。FIN表示断开连接。PSH,表示数据应尽快的交付接收应用进程,而不再等待整个缓存都填满了后再向上交付。URG,紧急指针有效标识。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
window表示窗口大小,TCP能够一次发多个数据,而不是一个一个发送,这样效率更高,确认是只需要确认最后一个即可。那么窗口值设置多少好呢,TCP有流控机制,根据双方发送能力和接受能力来,也就是说不能发的太多,也不能发的太少,TCP还有拥塞机制,如果网络传输拥塞丢包了,就会降低窗口值减小速度。 -
UDP–用户数据报文协议 --非面向连接的不可靠传输协议
TCP 传输速度—慢
UDP 传输速度—快
- TCP与UDP的比较:
2.1 确保TPC面向连接的方式:三次握手,四次挥手
-
三次握手:
任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接
SYN:同步序列号请求
ACK:确认
Seq+1 = ack
为什么是三次握手,两次不可以吗?为了实现可靠数据传输, TCP 协议的通信双方都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是 已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。可以总结为:三次握手主要是为了防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。
-
四次挥手:
第一次挥手 客户端发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态
第二次挥手 服务器端接收到连接释放报文后,发出确认报文,ACK=1,ack=u+1,并且带上己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT 关闭等待状态
第三次挥手 客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
第四次挥手 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命),当客户端撤销相应的TCB后,客户端才会进入CLOSED关闭状态,服务器端接收到确认报文后,会立即进入CLOSED关闭状态,到这里TCP连接就断开了,四次挥手完成
3.传输层还可以进行数据分段
MSS最大段长度 —1480B
MTU最大传输单元 —1500B
网络层:
根据IP地址来进行逻辑寻址 编址、寻址 --IP协议–网际网络协议。互联网的每一个节点,必然会存在一个IP地址。
-
IP地址:
Version :版本 4
IHL : 头部长度
Type of service服务类型
Total Length 总长度
标识 标志 片偏移 --支撑跨层封装
Time to live 生存时间 TTL
TTL 范围0-255
我们的数据包每经过一个路由器,这个TTL就会减1。当这个值为0时候这个数据包就会被丢弃,不再转发。
防环
Protocol 协议–标识上层协议 --TCP 6 UDP 17
Header Checksum
IP地址分为:IPv4 和 IPv61.1 IPv4的分类
根据使用场景(范围)
-
IPv4地址 有限地址 2^32 --约42亿
私有地址 --免费使用、本地唯一性
公有地址 --付费使用、全球唯一性 -
IPv4地址,根据第一个8位的范围分为
A 1-126
B 128-191
C 192-223
D 224-239
E 240-254
其中ABC三类地址为单播地址、D类地址为组播地址、E类地址科研使用,保留
单播地址:既可以作为源地址,也可以作为目标地址使用
组播地址:只能作为目标地址去使用
主类网:默认情况下,ABC三类地址拥有默认的子网掩码长度
A /8 255.0.0.0
B /16 255.255.0.0
C /24 255.255.255.0
私有地址范围:
A:10.0.0.0/8
B:172.16.0.0/16-172.31.0.0/16
C:192.168.0.0/24-192.168.255.0/24
3. 特殊的IP地址:
0.0.0.0/0 无效地址/默认地址/缺省地址
作用:在网络中表示所有IP地址
255.255.255.255 受限广播地址
作用:广播地址,只能作为目标地址使用,表示目标为所有IP地址
127.0.0.1 本地环回地址
作用:用于检测TCP/IP协议栈道是否能够正常的封装和解封装数据,PC在系统安装完成之后默认存在
169.254.x.x/16 本地私有地址
作用:当PC无法通过自动获取IP地址的方式获取到IP地址时,PC会自动产生一个IP地址。
192.168.1.0/24 主机位全 0 的地址-网络地址
作用:主机位全0 的地址代表一个网段,代表本网段内的所有IP地址
代表地址范围:192.168.1.1/24-192.168.1.255/24
此地址不能给主机使用
192.168.1.255/24 主机位全 1 的地址-广播地址
作用:主机位全1 的地址代表本网段内的广播地址,只能作为目标地址使用;也不能给主机使用
在一个网段内,除了主机位全0和主机位全1 的地址外,剩下的地址均可给主机使用 -
数据链路层:
将分组数据分装成帧;在数据链路上实现数据的点到点,或点到多点的直接通信,差错检测。
-
LLC -逻辑链路控制子层 --为上层服务提供FCS校验 –封装与解封装
-
MAC -媒介访问控制子层 —根据MAC地址来进行物理寻址
封装与解封装:
封装可以理解为各层将每一层的实现数据添加到内容数据之前,解封装是逆过程。而真正完成这个工作的是工作在各个层次的协议。类似于寄信的时候不能可把信纸直接寄出,需要要信封,收件人,发件人,邮编,邮票等东西,这些东西相当于各层的实现数据。
物理层:定义电气电压 光学特性 接口规范
TCP/IP标准模型 与 OSI模型的区别
相同:
1.都是模型化
2.下层为上层服务,每层相互独立
不同:
1.OSI模型是先有模型后有应用
2.TCP/IP先有应用,再有模型
3.TCP/IP是四层模型(五层–对等模型) OSI 七层
4.TCP/IP仅支持TCP/IP网络
-
分层的目的:
1.降低层次之间的关联性,某一层的协议增加或减少不影响其他层次协议的工作。
2.便于标准化的制定。
3.便于学习和了解计算机层次