网络😏
现在的生活离不开网络,例如手机,电脑,平板,都是网络的代名词,通过一些APP,浏览器,获取大量的信息如文字、声音、视频,这都是从网络的某个地址存在的或者是网络的另一端某个用户通过设备共享的,网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系,像我们平常办理宽带与手机办卡上网,都是通过向某一服务商缴费注册连上他们的设备,下载相应的聊天软件和浏览器就可以上网与他人交流、获取资源、浏览一些网络信息。
🔎OSI模型
物理层:定义了通信设备的传输规范,规定了激活、维持和关闭通信节点之间的机械特性、电气特性和功能特性等。此层为上层协议提供了一个传输数据的物理媒介。简单的描述是将数据转换为可通过物理介质传送的电子信号 相当于快递公司中的搬运工人。
数据链路层:定了数据封装以及传送的方式。这个层次的数据单位称为帧。数据链路层包括两个重要的子层:逻辑链路控制层(Logic Link Control,LLC)和介质访问控制层(Media Access Control,MAC)。负责在直接相连的节点之间进行可靠的数据传输,处理硬件地址,并进行错误检测和纠正。
网络层:负责将数据包从源节点路由至目标节点,处理逻辑地址(如IP地址)。
传输层:负责提供端到端的通信服务,确保数据包的正确传输,如使用TCP或UDP协议。
会话层:负责建立、管理和控制会话,使应用层实体之间的通信成为可能。
表示层:负责数据的编码、格式转换以及加密,确保一个系统发送的数据能被另一个系统正确理解。
应用层:最接近用户的一层,简单的描述是用户的应用程序和网络之间的接口。为用户提供网络服务。
🔎TCP/IP模型
TCP/IP模型是一个网络通信的简化版模型,它将OSI模型的七层简化为五层。
TCP/IP模型的每一层具体功能如下:
应用层:这一层对应于OSI模型的应用层、表示层和会话层。它负责处理应用程序的通信细节,如HTTP、FTP等协议的使用。
传输层:这一层对应于OSI模型的传输层,负责提供端到端的通信服务。在这一层中,TCP(传输控制协议)和UDP(用户数据报协议)是两个主要的协议。
互联网层:这一层对应于OSI模型的网络层,负责数据包的路由和转发,以及逻辑地址(如IP地址)的处理。
链路层:这一层对应于OSI模型的数据链路层和物理层,负责数据帧的传输和物理地址(如MAC地址)的处理。
物理层:这一层对应于OSI模型的物理层,负责比特流的传输和物理介质的相关标准。
协议
协议也叫网络协议,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。
常用到的协议有:网络层协议IP、传输层协议TCP和UDP、应用层协议HTTP等常用协议。
🔎IP协议
IP是整个TCP/IP协议族的核心,也是构成互联网的基础。 IP位于TCP/IP模型的网络层(相当于OSI模型的网络层),对上可 载送传输层各种协议的信息,例如TCP、UDP等。
目前的IP版本有4和6,如IPv4和IPv6,目前最流行的就是IPv4,有十进制和二进制两种表示方法。分别是:
点分四组十进制。每一组范围是[0~255],如:255.255.255.255
二进制,如:11111111 11111111 11111111 11111111
IPv6地址长度是128位,由8块(或8个字段)组成,每一块都包含四个16进制数,每块由冒号分隔。
有以下特点:
1、一个块中前导的0不必书写。
2、全0的块可以省略,并用符号::代替。
3、IPv6可以兼容IPv4地址,即可以用IPv6格式表示IPv4地址。表示方式为:IPv6块值为ffff,其后面紧跟“点分四
组”的 格式。如:::ffff:10.0.0.1可以代表IPv4:10.0.0.1
4、IPv6的低32位通常采用点分四组的表示法。:::ffff:10.0.0.1
IP地址是用来识别网络上的设备,因此,IP地址是由网络地址与主机地址两部分所组成
网络地址可用来识别设备所在的网络,网络地址位于IP地址的前段。当组织或企业申请IP地址时,所获得的并非IP地址 而是取得一个唯一的、能够识别的网络地址。同一网络上的所有设备,都有相同的网络地址。IP路由的功能是根据IP地址 中的网络地址,决定要将IP信息包送至所指明的那个网络
主机地址位于IP地址的后段,可用来识别网络上设备。同一网络上的设备都会有相同的网络地址,而各设备之间则是以 主机地址来区别。
A类IP地址
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围1.0.0.1-126.255.255.254可用的A类网络有126个,每个网络能容纳1677214个主机。
B类IP地址
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,
地址范围128.1.0.1-191.255.255.254,可用的B类网络有16384个,每个网络能容纳65534主机。
C类IP地址
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”,C类网络可达2097152个,每个网络能容纳254个主机。
私有ip
国际规定有一部分IP地址是用于我们的局域网使用,属于私网IP。
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
127.0.0.1可以代表本机IP地址,用 http://127.0.0.1 就可以测试本机中配置的Web服务器。
子网掩码
子网掩码,也称为网络掩码或地址掩码,是与IP地址结合使用的一种技术,它通过指定哪些位表示网络地址,哪些位表示主机地址来划分这两部分。这种划分有助于确定一个IP地址是在本地网络(局域网)上,还是远程网络上。在实际应用中,子网掩码用于以下方面:
网络设计与划分:通过子网掩码,网络管理员可以将一个大型网络划分为多个较小的子网,以提高IP地址的使用效率和网络管理的效率。
识别网络和主机:子网掩码使得网络设备能够识别出数据包的目的地是否在同一网络内,从而决定数据应该如何路由。
计算网络地址:通过将IP地址与子网掩码进行逻辑“与”运算,可以得到网络地址。这有助于确定设备所在的网络。
广播地址:子网掩码还可以用来计算广播地址,即在特定子网内所有主机位都设置为“1”的地址。
可用地址范围:了解子网掩码后,可以计算出一个子网内可用的IP地址范围,这对于网络规划至关重要。
子网掩码通常表示为点分十进制格式,例如255.255.255.0,其中255表示网络部分,0表示主机部分。在二进制形式下,子网掩码显示为一串1和0,其中1代表网络部分,0代表主机部分。
🔎TCP与UDP协议
在TCP/IP网络体系结构中,TCP(传输控制协议)、UDP(用户数据报协议)是传输层最重 要的两种协议,为上层用户提供级别的通信可靠性。
TCP(传输控制协议)定义了两台计算机之间进行可靠的传输而交换的数据和确认信息的
格式 以及计算机为了确保数据的正确到达而采取的措施。协议规定了TCP软件怎样识别给定计算机上的多个目的进程如何对分组、重复这类差错进行恢复。协议还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大特点就是提供的是面向连接、可靠的字节流服务。
UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。提供的是非面向连接
的、 不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层的数据发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。由于UDP在传输数据报文前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
面向连接的TCP:TCP协议是一种可靠的、一对一的、面向有连接的通信协议
TCP的建立——三次握手:
(1)在建立通道时,客户端首先要向服务端发送一个SYN同步信号。
(2)服务端在接收到这个信号之后会向客户端发出SYN同步信号和ACK确认信号。
(3)当服务端的ACK和SYN到达客户端后,客户端与服务端之间的这个“通道”就会被建立起来。
TCP的关闭——四次挥手:
(1)在数据传输完毕之后,客户端会向服务端发出一个FIN终止信号。
(2)服务端在收到这个信号之后会向客户端发出一个ACK确认信号。
(3)如果服务端此后也没有数据发给客户端时服务端会向客户端发送一个FIN终止信号。
(4)客户端收到这个信号之后会回复一个确认信号,在服务端接收到这个信号后,服务端与客户端的通道也就关闭。
🔎HTTP协议
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。 HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和 POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。
🔎端口
端口是计算机网络通信中的一个虚拟接口,而端口号是用来标识这些端口的数字编号。
在网络技术中,端口分为两种类型:物理端口和逻辑端口。物理端口是指连接物理设备的接口,如路由器、交换机上用于连接其他网络设备的接口。逻辑端口则是在软件层面上用于区分不同服务的端口。
TCP和UDP协议都有自己的端口号,它们是不同的。例如,TCP的80端口用于HTTP服务,而UDP的80端口则是保留的,不会被HTTP服务使用。在使用端口时,需要注意不要与已有的服务冲突,以免造成网络通信问题。
🔎Socket
Socket也叫套接字(Socket)随着TCP/IP协议的使用,也越来越多地被使用在网络应用程序的构建中。Socket编程也已经成为网络中传送和接收数据的首选方法。对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。在网络编程中,套接字的使用涉及到创建、绑定、监听、连接、发送、接收等一系列操作。这些操作通过套接字函数实现,例如socket()、bind()、listen()、accept()、connect()、send()、recv()等。