目录
1.网络的分类
2.网络协议
3.网络分层结构
1.OSI七层模型
2.TCP/IP四层模型
3.网络与OS的关系
4.网络传输基本流程
1.协议报头
5.网络中的地址管理
1.IP地址
2.端口号
6.传输层协议
1.TCP协议
2.UDP协议
3.网络字节序
7.socket
1.网络的分类
局域网(Local Area Network,LAN)是指在较小地理范围内,由计算机和终端设备相互连接而成的网络。局域网通常用于家庭、办公室、学校等局部区域内,可以方便地共享资源和信息。
广域网(Wide Area Network,WAN)是指以广泛地理范围为基础,连接多个局域网或多个计算机网络的网络。广域网通常通过公共的通信线路,如电话线、光纤、卫星等建立起连接,可以实现跨地区、跨国家的通信和数据传输。
局域网与广域网之间的区别主要有以下几点:
- 范围:局域网覆盖较小的地理范围,通常在一个建筑物、一栋楼或一个校园内;而广域网可以覆盖更广阔的地理范围,可以跨越多个城市、国家或地区。
- 传输速率:局域网通常具有较高的传输速率,可以达到百兆甚至千兆的速度;而广域网的传输速率受到地理距离和网络基础设施的限制,一般较慢。
- 管理和控制:局域网由局域网管理员负责管理和控制,可以根据需要设置访问权限和安全策略;而广域网通常由网络运营商或大型企业负责管理和维护,用户的权限和访问控制受到限制。
- 成本:局域网相对来说成本较低,因为只需要建设和维护一个较小的网络;而广域网的建设和维护成本较高,需要更多的硬件设备和专业人员。
2.网络协议
网络协议是网络通信中所使用的一套规则和约定,用于确定数据如何在网络中传输、路由和接收。它定义了通信设备之间的通信规程,包括数据格式、错误检测、数据压缩、数据传输控制和网络安全等。
3.网络分层结构
网络分层结构是指将网络的功能划分为不同的层次,每个层次负责不同的任务和功能。常见的网络分层结构有OSI模型和TCP/IP模型。
a.软件分层
任何问题都可以添加一层软件分层来解决,层和层之间是松耦合的,可以随时替换或者方便维护。
b.网络分层
网络分层是将网络功能划分为不同的层级,每个层级负责不同的任务和功能。每个层级都有自己的协议和规范,各个层级之间通过接口进行交互。网络分层的目的是为了提高网络的灵活性、可扩展性和互操作性。
为什么要进行网络分层呢?首先,网络分层可以简化网络的设计和管理。通过将网络功能划分为不同的层级,每个层级只需要关注自身的任务,不会受到其他层级的影响。这样可以减少网络的复杂性,提高网络的可管理性。
其次,网络分层可以提高网络的可扩展性。网络功能的分层设计使得网络可以根据需要进行扩展或添加新的功能,而不会对整体网络产生影响。这样可以更好地应对不断增长的网络需求,提高网络的扩展性。
1.OSI七层模型
OSI模型(开放系统互连参考模型)是国际标准化组织(ISO)制定的一种网络通信的参考模型。它将网络通信分为七个层次:
-
物理层(Physical Layer):负责传输比特流,即将数据从一个节点传输到另一个节点的物理媒介。
-
数据链路层(Data Link Layer):负责将数据划分为数据帧,并提供错误检测和纠正。
-
网络层(Network Layer):负责将数据包从源节点传输到目标节点,并处理路由选择和拥塞控制等问题。
-
传输层(Transport Layer):负责在端到端的通信中提供可靠的数据传输,并处理流量控制和错误恢复。
-
会话层(Session Layer):负责建立、管理和终止会话。
-
表示层(Presentation Layer):负责数据的格式转换、加密和解密,确保数据的可解释性。
-
应用层(Application Layer):负责为用户提供服务,如文件传输、电子邮件等。
2.TCP/IP四层模型
TCP/IP模型是实际使用的网络分层结构,它将网络通信分为四个层次:
-
网络接口层(物理层+数据链路层)(Network Interface Layer):负责将数据从网络传输到物理媒介。
-
网络层(Internet Layer):负责将数据包从源节点传输到目标节点,并处理路由选择和拥塞控制等问题。
-
传输层(Transport Layer):负责在端到端的通信中提供可靠的数据传输,并处理流量控制和错误恢复。
-
应用层(Application Layer):负责为用户提供服务,如文件传输、电子邮件等。
3.网络与OS的关系
世界上所有的OS只要想入网,就必须得遵守TCP/IP协议,保证不同主机之间的数据通信。双方必须使用同样的数据类型,所以,经过网络传输,对方一定认识每个字段的大小,含义,协议就是双方都能识别的结构体数据类型。
通过接口、类、消息格式定义和标记等机制,编程语言提供了一种统一的方式来描述和实现协议,从而保证不同实体之间的正确通信和交互。
4.网络传输基本流程
在同一个局域网中的主机,能不能直接通信呢?能。原理是什么?以太网的通信原理!数据碰撞。任何时候,只允许任何一台主机在局域网中发送消息,网络和OS一统:局域网本质,是一个临界资源!
-
物理连接:局域网中的计算机通过物理介质(如以太网电缆、Wi-Fi等)进行连接。计算机通过网卡与物理介质相连,实现数据的物理传输。
-
MAC地址:每台计算机都有唯一的物理地址,称为MAC地址(Media Access Control Address)。在局域网中,计算机通过MAC地址识别彼此,并进行通信。
-
交换机:局域网中通常使用交换机作为网络设备,用于实现数据的转发和交换。交换机根据MAC地址学习和转发数据帧,将数据从发送端直接传输到接收端,提高了数据传输的效率。
1.协议报头
报文不断被自顶向下进行交付的过程,要添加每一层的协议报头,叫做封装。
报文=协议报头+有效载荷
协议报头(Protocol Header)是计算机网络通信中,位于数据包(Packet)开头的部分,用于标识和控制数据包的传输和处理方式。它包含了一些必要的信息,使得网络设备可以根据这些信息正确地处理和路由数据包。
有效载荷(Payload)是计算机网络通信中,除去协议报头后的数据部分。它是应用层向传输层提交的数据,也是网络传输的实际内容。
解包:将报头和有效载荷进行分离。
分用:将自己的有效载荷交付给上层的那一个协议。
任何协议(特殊情况暂不考虑)必须得考虑解包和分用。
5.网络中的地址管理
1.IP地址
IP地址(Internet Protocol Address)是一个唯一标识网络上设备的数字标签。它用于在Internet上识别和定位设备,使它们能够相互通信。
IP地址是一个由32位或128位二进制数字组成的标识符。为了方便人们使用和记忆,IP地址被表示为以点分割的四个十进制数(IPv4)或八个十六进制数(IPv6)。每个十进制数或十六进制数代表了8位或16位二进制数。
2.端口号
端口号是一个用于标识应用程序或服务的数字标识符。在计算机网络中,端口号被用于将传输控制协议(TCP)或用户数据报协议(UDP)数据包传递给正确的应用程序或服务。
1.我们上网,无非就是两种动作:a.把远处的数据拉取到本地 b.把我的数据发送到远端
2.大部分的网络通信行为,都是用户触发的。计算机中谁表示用户呢?进程!!!
3.把数据发送到目标主机,不是目的,是手段。真正的目的,是吧数据交给这个主机上的某一个服务(进程)
4.网络通信的本质,其实是进程在帮我们进行网络通信,无论是对于C还是S
5.IP(唯一的一台主机)+port(该主机上的唯一的一个进程)=互联网中唯一的一个进程
6.client->server:client进程->server进程 client进程=client ip +client port=client是互联网中唯一的一个进程 server进程=server ip +server port=client是互联网中唯一的一个进程 他们两个唯一的找到彼此。
网络通信的本质:其实就是进程间通信!!!
6.传输层协议
1.TCP协议
TCP(Transmission Control Protocol,传输控制协议)是一种在计算机网络中常用的传输协议。它是一种面向连接的、可靠的、基于字节流的传输协议。
TCP协议建立在IP协议之上,它负责将数据分割成合适的大小,并在源和目的之间建立一个可靠的连接。TCP协议通过三次握手建立连接,保证数据的可靠性和顺序传输。一旦连接建立,TCP协议会监控数据的传送情况,并通过确认和重传机制确保数据的可靠性。
TCP协议还具有拥塞控制的功能,它会根据网络的拥塞程度调整数据的传输速率,以避免网络拥塞。
TCP协议常用于可靠的数据传输,例如下载文件、发送电子邮件等。它可以保证数据的可靠性和顺序传输,但也因此引入了一定的延迟和开销。
2.UDP协议
UDP(User Datagram Protocol,用户数据报协议)是一种在计算机网络中常用的传输协议。它是一种无连接的、不可靠的、基于数据报的传输协议。
与TCP协议不同,UDP协议不需要在发送数据之前建立连接,也不会保证数据的可靠性和顺序传输。UDP协议将数据划分为小的数据报,每个数据报都有源和目的的IP地址以及端口号。UDP协议直接将数据报发送给目标IP地址和端口号,不会有确认和重传机制。
UDP协议的优点是速度快和开销小,因为它不需要建立连接和维护状态,适用于对实时性要求较高的应用,如实时视频和音频传输。但它的缺点是数据的可靠性和顺序性无法得到保证,因此在一些对数据可靠性要求较高的应用中不适用。
3.网络字节序
网络字节序是一种约定俗成的字节顺序,用于在不同计算机之间进行数据传输和通信。它定义了在网络中数据的字节顺序,以确保数据在不同计算机上的解析和处理是一致的。
在网络传输中,数据通常被划分为多个字节进行传输。字节顺序指的是多个字节的排列顺序。在网络中,采用的是大端字节顺序(Big-Endian)。
在大端字节顺序中,数据的高位字节存储在低地址中,而低位字节存储在高地址中。这意味着在网络中,数据的高位字节先传输,低位字节后传输。例如,16位整数0x1234在网络中传输时,先传输高位字节0x12,再传输低位字节0x34。
7.socket
套接字(Socket)是在网络通信中用于建立连接和进行数据传输的一种机制。它是对网络通信的抽象,通过套接字可以实现客户端和服务器之间的数据交换。
套接字可分为两种类型:流套接字(Stream Socket)和数据报套接字(Datagram Socket)。
- 流套接字:基于TCP协议,提供面向连接的可靠数据传输。它通过创建一个连接,可以实现数据的顺序传输和可靠性保证。
- 数据报套接字:基于UDP协议,提供无连接的不可靠数据传输。它将数据分成小的数据包进行传输,不保证数据的可靠性和顺序性,但传输效率较高。
Socket是一种用于网络通信的编程接口,它提供了在计算机之间传输数据的方法。通过使用Socket编程接口,可以实现不同计算机之间的网络通信,例如在客户端和服务器之间进行数据传输。
Socket编程接口提供了一组用于创建、连接、发送和接收数据的函数和方法。它基于TCP/IP协议栈,可以支持TCP或UDP协议进行数据传输。
在Socket编程中,有两种常见的类型:客户端Socket和服务器端Socket。客户端Socket用于连接服务器端Socket,并发送请求和接收响应数据。服务器端Socket用于监听客户端的连接请求,并接收和处理客户端发送的数据。