网络基础之OSI七层协议
网络基础
导读
-
早期的电话需要有电话线、后面的大屁股电脑需要插网线、再后来的智能手机电脑需要有网卡。
也就是说网络通信的第一步必须得先有物理连接介质
-
有了物理连接介质就能实现通信了吗
不同语言国家的人彼此之间打电话沟通,彼此都无法理解对方说了些什么,需要双方都精通对方的语言或者用一种全世界通用的语言进行沟通交流才可以解决。
那回到我们的计算机,不同计算机之间要想实现无障碍的通信,除了物理连接介质以外,也应该有一套共用的标准,只有大家都按照这个标准来,计算机之间才能实现通信
这个标准我们叫它互联网协议!
互联网协议
1.储备知识
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
每层常见物理设备
- 交换机:能够使接入该机器的所有计算机之间彼此互联
- 路由器:能够连接多个局域网并实现局域网之间的数据传输
- 局域网:有交换机组成的网络
- 互联网:可以简单的理解为是多个局域网之间彼此互联
交换机知识点补充
现在如果就两台计算机,它们之间要想通信仅仅只需要彼此链接起来即可通信。
那如果是多台电脑之间想要实现彼此之间的相互通信,该如何链接呢?
一台电脑开多个网口插多个网线?那不成马蜂窝了嘛?
这个时候就需要一个中间人来帮我们完成多台机器之间的互联>>>:交换机(所有链接了同一个交换机的电脑彼此之间都是互联的)
了解:
三层交换机:既具有交换机功能又具有路由器功能
四层交换机:能够根据你走的是什么协议对应找到对应的应用
每层常见运行协议
OSI七层协议
1.物理层
物理链接介质,传递电信号
提供一个物理连接接口(网线口 无线网卡)
2.数据链路层
物理层接收到一长串010101如何切分取值,这个是数据链路层的里面的以太网协议
- 1.它规定了0101的二进制电信号的分组方式
- 2.但凡接入互联网的机器,必须有一块网卡
- 网卡(用来唯一标识全世界独一无二的一台计算机)每块网卡出厂时都会被烧制上一个全世界唯一的编号,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
- 这个唯一表示计算机独一无二的地址就叫mac地址(类似于身份证号)
基于以太网协议的通信方式
上面如果仅仅是两台电脑之间通信是不是已经开业完成了,但是如果是多台呢?如何去精准找到对方?
这里需要知道,在同一个局域网内通信基本靠吼!广播,单播
弊端:广播风暴,无法跨局域网通信
3.网络层
规定了计算机都必须有一个ip地址
ip地址特点:点分十进制
有两个版本ipv4和ipv6 为了能够兼容更多的计算机
其中ipv4版本
最小:0.0.0.0
最大:255.255.255.255
ipv6版本则能够表示出地球上每一粒沙子!
IP协议可以跨局域网传输并且ip地址能够唯一标识互联网中独一无二的一台机器!
arp协议
将IP地址转换成mac地址(基于网络请求)
4.传输层
TCP/UDP协议都是基于端口工作的协议这是重点,后面再讲,先来看,计算机之间通信,到底是谁和谁想通信,是计算机本身吗?是不是应该是我安装在计算机上的应用软件之间想通信(qq,微信等),那我们现在只是知道了如何定位全世界独一无二的计算机,没办法确定计算机之上的哪款软件需要通信吧?这就需要用到端口
1.端口
端口(port):0~65535用来标识一台计算机之上基于网络通信的应用软件,0~1024操作系统自己用的,一般情况下8000之后的端口我们可以任意使用,8000之前的通常会有相应的程序默认使用.
端口协议
范围:0~65535
特性:动态分配
eg:第一次运行微信 系统随机取一个端口号2022
然后关闭微信重新启动 系统随机取一个端口号
端口号基本使用
0~1024系统默认需要使用的端口号
1024~8000常见软件端口号
以后我们开发的软件最后使用8000之后的端口号
ip:能够查到全世界独一无二的计算机
port:能够标识一台机器上的某个程序
ip+port:能够确定全世界范围内一台计算机上的某个程序
2.TCP协议
TCP协议是流式协议
当应用程序想通过TCP协议实现远程通信时,彼此之间必须先先建立双向通信通道,基于该双向通道实现数据的远程交互,该双向通道直到任意一方主动断开才会失效
重要状态
listen监听态:等待对方发请求
syn_rcvd态:忙于恢复确认建立请求
# 洪水攻击:服务端在同一时间接收到了大量的要求建立链接的请求
三次握手
建立双向通道的过程称之为三次握手,建立通道的发起者可以是客户端也可以是服务端,下面我们就以客户端先主动发起为例
-
客户端会朝服务端发送一个请求询问服务端:"我能不能挖一条通往你家的地道"
-
服务端收到请求,回复说:"好吧 你挖吧",由于TCP是双向通道,客户端挖向服务端的通道只能给客户端朝服务端发消息使用,服务端要向给客户端发消息是没办法走这一条通道的,需要自己挖一条通往客户端的通道
所以服务端在回复同意客户端挖通道的同时还会问一句:"那我能不能也挖一条通往你家的通道"
-
客户端收到服务端请求后客户端到服务端的通道就挖成功了,然后也会同意服务端的请求,服务端挖向客户端的通道也会成功
总结:之所以称之为三次握手就是因为中间的服务端的同意,和请求合并成了一次请求.
四次挥手
建立一个连接需要三次握手,而终止一个连接要经过四次握手
当服务端或者客户端不想再与对方进行通信之后,双方任意一方都可以主动发起断开链接的请求,我们还是以客户端主动发起为例
-
客户端由于已经没有任何需要发送给服务端的消息了,所以发起断开客户端到服务端的通道请求
-
服务端收到该请求后同意了 至此客户端到服务端的单项通道断开
-
服务端这个时候不会立刻朝客户端发器请求说那我也断开到你家的通道吧,服务端需要想想我手上还有没有需要发送给客户端的消息,如果还有的话,那我不能立马断开,先把数据发完才能断
等服务端检查完毕之后发送也没有数据要给客户端了,这个时候就会朝客户端发起断开服务端到客户端的通道请求
-
客户端同意该请求,至此四次挥手完成
总结:挥手必须是四次,中间的两次不能合并成一次,原因就在于需要检查是否还有数据需要给对方发送
TCP协议的可靠性
https://www.cnblogs.com/zonghan/p/15789942.html
3.UDP协议
当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。
当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
TCP和UDP类似于
TCP:打电话(你一句我一句,你侬我侬)
UDP: 发短信(管你看不看,发了就不关我事了)
早期的QQ使用的就是UDP
5.应用层
都是人为自定义的协议标准 可遵循可不遵循
HTTP协议 FTP协议 ...