网络模型基础
Java网络编程基础
1. OSI vs TCP/IP模型
什么是OSI网络模型(了解)?
OSI全称Open System Interconnection Model. 中文全称:开放式系统互连模型。
上层:
- Application:应用层与软件直接交互,提供所需的通信功能,功能包括验证通讯伙伴和资源的可用性,以支持任何数据的传输,该层定义了最终应用程序的协议,包括域名系统DNS,FTP,HTTP,IMAP(消息访问协议),POP(邮局协议),SFTP,SNMP(简单网络管理协议),TELNET(虚拟终端协议)
- Presentation:检查数据,以确保与通讯资源兼容,将数据转化成应用程序等较低级别能接受的形式,能处理任何所需的数据格式,数据的压缩和加密。
- Session:控制计算机之间的对话,也就是连接,建立、管理、维护并最终终止本地与远程应用程序之间的连接,处理身份的验证和授权,验证数据是否已交付
下层:
- Transport:提供通过一个或多个网络,将数据序列从源传输到目标主机的功能和手段,同时保证服务质量(QS:Quality of Service),并确保数据的完整传递。
- Network:通过逻辑寻址和交换功能处理数据,网络是可以连接许多节点的介质,每个节点都有一个地址,当一个节点需要将数据传输到其他节点时,它仅能提供消息的内容和目标的地址,而网络将找到将消息传输到目标节点的方法,并可能通过其他节点进行路由,如果消息过长,网络可能将其在一个节点上将其拆分成多个段,分别发送,然后在另一个节点上再重新组合成片段。
- DataLink:提供节点到节点的传输
- Physical:定义了数据连接的物理规格,例如连接器的插针布局,电缆的工作电压,光纤电缆规格以及无线设备的频率等,还负责物理介质中非结构化原始数据的发送和接收。底层网络设备的层,从不关心协议或其他更高层的东西。了解。
什么是TCP/IP模型?
TCP/IP模型和OSI模型相比会简单一点,只有4层,分别为数据链路层,网络层,传输层和应用层。
Application:是使应用程序能够访问其他层的服务,并定义了应用程序用来交换数据的协议
Transport:为应用程序提供会话和数据通讯服务,该层的核心协议是TCP和UDP,TCP提供一对一面向连接的可靠通讯服务,他负责对发送的数据包排序和确认,并恢复传输中丢失的数据包;UDP他提供一对一或一对多的无连接,不可靠的通讯服务,他要传送的数据量较少时,例如只有一个数据包时会使用UDP。
Internet:负责主机的寻址,打包和路由功能,网络层的核心协议是IP。
NetworkAccess:负责将TCP/IP数据包放在网络介质上,并在网络介质上接收TCP/IP数据包
什么是协议?
网络协议是一组确定的规则,这些规则确定如何在同一网络中的不同设备之间传输数据。本质上来说两个端点都要遵守这个协议,而不管内部结构是什么样的,就能通信。
OSI与TCP/IP的特点
相同点:
- 分层结构:(以下是分层结构的好处,并不是TCP/IP或者OSI独有的好处)
- 将任务分为子任务,独立解决每个子任务
- 建立定义明确的界面层,移植更容易
- 代码重用
- 可扩展性
- 标准化接口
- OSI的优点:
- 可以帮助人们标准化路由器,交换机,主板和其他硬件。也就是说不管哪一家生产的硬件都可以互用
- 降低复杂性并使接口标准化
- 促进模块化工程
- 当技术发生变化时,可以用新协议替换老协议
- 提供面向连接的服务以及无连接服务的支持
- 他是计算机网络中的标准模型
- 支持无连接和面向连接的服务
- 它提供了适应各种协议的灵活性
- OSI的缺点:
- 协议的适配是一项繁琐的任务
- 你只能将其用作参考模型
- 他没有定义任何特定的协议
- 在OSI网络层模型中,某些服务在许多层中都是重复的,例如传输层和数据链路层
- 各层不能并行工作,因为每一层都需要等待从上一层获取数据
- TCP/IP的优点:
- 它可以帮助人们在不同类型的计算机之间建立连接
- 它独立于操作系统运行
- 它支持许多路由协议
- 他使组织之间的互联互通成为可能
- TCP/IP模型具有高度可扩展的客户端-服务器体系结构
- 他可以独立操作
- 支持多种路由协议
- TCP/IP的缺点:
- TCP/IP使设置和管理起来更加复杂
- TCP/IP的浅层/开销高于IPX(Integernet分组交换)
- 传输层模型不能保证报的传递。
- 在TCP/IP中替换协议并不容易
- 服务,接口和协议没有明确的分离
一个是理论的模型OSI,一个是成品TCP/IP
2. 物理层+数据链路层
2.1. 物理层:
- 硬件规格的定义
- 编码和信号处理
- 数据收发
- 拓扑和物理网络设计
2.2. 数据链路层:
-
链路层包括量小层:逻辑连接控制层(LLC)和媒体访问控制层(MAC)
LLC:Logical Link Control;MAC:Media Access Control
媒体访问控制(MAC)子层提供用于访问传输介质的控制。他负责通过共享的传输介质将数据包从一个网卡(NIC)移动到另一个。物理寻址在媒体访问层进行,这是指进行计算机分配网络访问权限,防止他们同时传输从而导致数据冲突的方法。常见的MAC方法包括以太网使用带冲突检测的载波侦听多路访问(CSMA/CD)技术。
-
功能
-
Flow Control
Flow Control是为了确保数据流的传输不会使接收方不堪重负。接收方通常会分配一些最大长度的数据缓冲区,当数据收到了,接收方必须要在传给上一层之前对一定的数据进行处理。
-
Stop-and-Wait Flow Control
这是一个最简单的算法,从起点发送一个Frame(帧)到终点,如果收到了,就返回一个Ack。起点会等收到上一个Frame的ack才会去发送下一个Frame。
-
Sliding-Window Flow Control
将上面的算法以多线程方式呈现
-
-
Error Control
-
Stop-and-wait ARQ
这个就是基于Stop-and-wait FLow Contorl的算法。起点直到收到ack才会发下一个Frame
-
Go-Back-N ARQ
这是基于滑动窗口流量控制的最常用的算法
通常要面对两种情况:
- Damaged Frame
- Damaged RR
-
Selective-Reject ARQ
这种算法中,唯一需要重新传的Frame是收到了一个SREJ的回复或者是超时,这种算法比上一种算法要更高效
-
-
常见错误检测方式
- 奇偶校验:奇用于同步校验,偶用于异步校验
- 循环冗余校验:XOR异或运算
-
帧
这是帧头所包含的数据.
-
Flag:
由 01111110包裹的头和尾,当扫描到01111110...........01111110,就认为是一个帧。但是如果infromation中也出现了01111110会影响对Flag的判断,于是有了以下比特填充的首尾标志法
在information中,每出现五个1:11111的后面就插入一个额外的0,当出现5个1的模式时,第6位被检查,如果该位为0则将其删除,如果第6位第7位均为1则发送方指示终止条件,通过使用位修饰可以将任意位模式插入帧的数据字段,此属性称为数据透明属性,等到接收方还会被替换掉。
-
Address:地址字段的标识
-
Contorl 控制位标识
-
Information:消息位标识
-
Fram Check Sequence:帧检查序列
总结
- 处理比特传输发生的错误
- 他确保数据流的传输速度不会使发送和接收设备不堪重负,流量控制
- 它允许将数据传输到网络层的第3层(IP),并在其中进行寻址和路由
3. 网络层
该层确保如何将设备发送到接收设备,负责数据包的转发、路由和寻址,在网络之间以数据包的形式传输数据段。将源IP地址和目标IP地址分配给数据段,还确定了数据传递的最佳路径,IP是该层使用的主要协议之一,另外还有一些路由和加密的协议。
网络层的主要功能:
路由:当数据包到达路由器的输入链路时,路由器会将数据包移动到路由器的输出链路。
逻辑寻址:数据链路层实现物理寻址,网络层实现逻辑寻址。逻辑寻址还用于区分原系统和目标系统,网络层在数据包中添加包头,其中包含发送者和接收者的逻辑地址。
互联网络:提供了不同类型网络之间的逻辑链接
分段:分段是将数据包分解为通过不同网络传播的最小的单个数据单元的过程。
网络层提供的服务:
- 可靠的支付,该层提供的服务可确保将提供的数据包将到达其目的地
- 带有延迟限制的保证传送,此服务保证在指定的主机到主机延迟限制内传送数据包
- 有序数据包,此服务可确保数据包按其发送顺序到达目的地
- 保证最大的抖动,此服务可保证在发送方两次连续传输之间花费的时间等于在发送方两次接受之间的时间
- 安全服务,网络层通过使用源主机和目标主机之间的会话密钥来提供安全性,源主机的网络层对发送目标的主机的数据包的有效载荷进行加密,然后目标主机中的网络层将解密有效负载,以这种方式,网络层维护数据完整性和原认证服务。
什么是数据包?
通过Internet发送的所有数据都被分解为称为“数据包”的娇小数据块
还有什么协议?
- IP:
- IPsec:
- ICMP:Internet Control Message Protocol,错误报告协议
- IGMP
- GRE:Generic Routing Encapsulation,通用路由封装
4. 传输层
传输层为可靠的通信提供了完整的端到端解决方案,TCP/IP依靠传输层有效的控制两个主机之间的通信,当IP通信会话必须开始或结束时,将使用传输层建立此链接,传输层是TCP/IP端口监听的层,网络层提供了点到点的连接,传输层提供了端到端的链接。
什么是点到点和端到端?
- 端到端是网络连接
- 点到点是物理拓扑
必须现有端到端的连接,内部才能有点到点的物理连接
这一层包含TCP和UDP两种非常有名的协议
TCP的介绍:
TCP的全称(Transmission Control Protocol),它是一种通信协议,通过该协议,数据可以通过网络在系统之间传输。在这种情况下,数据以数据包的形式传输。它包括错误检查,保证传递并保留数据包的顺序
UDP的介绍:
其实UDP的优点还是很多的,除了不能保证错误检查和数据恢复之外,它与TCP协议相同,无论接收端出现什么问题,数据都会连续发送。
5.应用层
经典的面试题:当你在浏览器上输入www.baidu. com会发生什么?
当你搜索该网页时,该Link就要与服务器网站之间产生关联,就要有一个协议,这个协议就是超文本传输协议Http,将服务器上的网站转移到客户端的浏览器,还有Https,他是超文本传输协议的加密版本,超文本的作用就是将网页以超文本的格式编写,这是文本文档的基本格式,用于指示如何在web浏览器中呈现信息的指令,这个超文本文档实际上是一个文件,我们可以使用Http或Https传输该文件,以获取他的版本或者是加密版本,这里呢是http,实际上是将网站传输到客户端的协议,也就是应用层程序协议。这个答案只针对应用层,不关联DNS等。
总结
数据链路层处理比特传输发生的错误,进行设备间的物理寻址,限流,将数据传输到网络层,或从网络层中获取数据。
网络层负责将数据从源设备发送到接收设备,负责数据包的转发、路由和逻辑寻址,在网络之间以数据包的形式传输数据段。
传输层负责端对端的连接,负责TCP/IP端口的监听等。
应用层就是我们应用的软件,是调用传输层的单位。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)