一、网络结构模型
1.1C/S结构
C/S结构——服务器与客户机;
CS结构通常采用两层结构,服务器负责数据的管理,客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器,服务器则是提供信息供人访问的计算机。
例如:QQ桌面的客户端,腾讯服务器;
优点:
1、充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以C/S结构客户端响应快;(大型游戏,先将数据进行处理,再将数据发送给服务器。但是网页游戏就很少依赖客户端,基本上数据的处理都是在服务器中);
2、操作界面漂亮,形式多样,可以充分满足客户自身的个性化要求;
3、C/S 结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
4、安全性较高,C/S 一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强,一般高度机密的信息系统采用C/S 结构适宜。
缺点:
1、客户端需要安装专有的客户端软件,每一台电脑都得进行安装,更新也需要都更新;
2、对客户端的操作系统有一定的限制,不能够跨平台。(针对不同的操作系统需要不同的客户端软件)。
1.2B/S结构
浏览器—服务器模型;
是 WEB 兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件;不需要专门的客户端,只是需要浏览器,就可以对服务器进行访问。将系统功能实现的核心部分集中到服
务器上,简化了系统的开发、维护和使用。
优点:
成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用。
缺点:
1. 通信开销大、系统和数据的安全性较难保障;
2. 个性特点明显降低,无法实现具有个性化的功能要求;
3. 协议一般是固定的:http/https
4. 客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低。
大型炫酷游戏——CS结构;小型网页游戏——BS结构;
二、MAC地址
网卡: 一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,又称为网络适配器或网络接口卡NIC。它使得用户可以通过电缆或无线相互连接。
网卡分为以太网卡和无线网卡,下图为以太网卡。
每一个网卡都有一个被称为 MAC 地址的独一无二的 48 位串行号。
MAC地址相当于是网卡的门牌号;
网卡的主要功能:
1.数据的封装与解封装;
2.链路管理;
3.数据编码与译码。
MAC 地址(Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址、以太网地址、物理地址或硬件地址,它是一个用来确认网络设备位置的位址,由网络设备制造商生产时烧录在网卡中。,第二层数据链路层则负责 MAC位址 。
MAC 地址用于在网络中唯一标识一个网卡,一台设备若有一或多个网卡,则每个网卡都需
要并会有一个唯一的 MAC 地址。不同的计算机都有网卡,每个网卡是唯一的。通过网卡可以找到对应的计算机。
MAC 地址的长度为 48 位(6个字节),通常表示为 12 个 16 进制数,如:00-16-EA-AE-3C-40 就是一个MAC 地址,其中前 3 个字节,16 进制数 00-16-EA 代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后 3 个字节,16进制数 AE-3C-40 代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的 MAC 地址,MAC 地址在世界是唯一的。形象地说,MAC 地址就如同身份证上的身份证号码,具有唯一性。
三、IP地址
简介
计算机之间的交流需要有一定的协议,规定了计算机在因特网上进行通信时应当遵循的规则。任何厂家生产的计算机系统,只要遵守 IP 协议就可以与因特网互连互通。
各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。IP 协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP 数据报”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。
IP 地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。IP 地址是 IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IP 地址是一个 32 位的二进制数,通常被分割为 4 个“ 8 位二进制数”(也就是 4 个字节)。IP 地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是 0~255 之间的十进制整数。
例:点分十进IP地址(100.4.5.6),实际上是 32 位二进制数
(01100100.00000100.00000101.00000110)。
IP地址编制方式
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个 IP 地址包括两个标识码(ID),即网络ID(网段) 和主机 ID。同一个物理网络上的所有主机都使用同一个网络 ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机 ID 与其对应 。
A类IP地址
一个 A 类 IP 地址是指, 在 IP 地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。1个字节网络地址和3个字节主机地址,网络地址的最高位必须是“0”。A
类网络地址数量较少,有 126 个网络,每个网络可以容纳主机数达 1600 多万台。
A 类 IP 地址 地址范围 1.0.0.1 - 126.255.255.254(二进制表示为:00000001 00000000 00000000 00000001 - 01111111 11111111 11111111 11111110)。
网络段,第一个字节范围为0-127,由于全0和全1的地址用作特殊用途,实际可指派的第一个字段的范围为1-126;
每个网络段的主机地址,包括三个字节,最后一个是广播地址,以及全0的需要去除,每个网络支持的最大主机数为 256 的 3 次方 - 2 = 16777214 台。
一般用到广域网;
B类IP地址
一个 B 类 IP 地址是指,在 IP 地址的四段号码中,前两段号码为网络号码。如果用二进制表示 IP 地址的话,B 类 IP 地址就由 2 字节的网络地址和 2 字节主机地址组成,网络地址的最高位必须是“10”。B 类 IP地址中网络的标识长度为 16 位,主机标识的长度为 16 位,B 类网络地址适用于中等规模的网络,有16384 个网络,每个网络所能容纳的计算机数为 6 万多台。
B 类 IP 地址地址范围 128.0.0.1 - 191.255.255.254 (二进制表示为:10000000 00000000 00000000 00000001 - 10111111 11111111 11111111 11111110)。 最后一个是广播地址。
每个网络段的主机地址,包括两个字节,最后一个是广播地址,以及全0的需要去除,每个网络支持的最大主机数为 256 的 2 次方 - 2 = 65534 台。一般用到中等网络;
C类IP地址
一个 C 类 IP 地址是指,在 IP 地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示 IP 地址的话,C 类 IP 地址就由 3 字节的网络地址和 1 字节主机地址组成,网络地址的最高位必须是“110”。C 类 IP 地址中网络的标识长度为 24 位,主机标识的长度为 8 位,C 类网络地址数量较多,有 209 万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。
C 类 IP 地址范围 192.0.0.1-223.255.255.254 (二进制表示为: 11000000 00000000 00000000 00000001 - 11011111 11111111 11111111 11111110)。
每个网络段的主机地址,包括一个字节,最后一个是广播地址,以及全0的需要去除每个网络支持的最大主机数为 256 - 2 = 254 台。一般用在局域网;
特殊网址:
每一个字节都为 0 的地址( “0.0.0.0” )对应于当前主机;
IP 地址中的每一个字节都为 1 的 IP 地址( “255.255.255.255” )是当前子网的广播地址;
子网掩码
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个 IP 地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存
在,它必须结合 IP 地址一起使用。子网掩码只有一个作用,就是将某个 IP 地址划分成网络地址和
主机地址两部分。
子网掩码是一个 32 位地址,用于屏蔽 IP 地址的一部分以区别网络标识和主机标识,并说明该 IP 地址是在局域网上,还是在广域网上。
比如:IP地址为:192.168.193.128
子网掩码为:255.255.255.0
如何求出网络ID?主机ID?
网络ID=IP地址&子网掩码;192.168.193.0;C类IP-局域网;
主机ID=IP地址&(子网掩码取反);0.0.0.128;
子网掩码由 1 和 0 组成,且 1 和 0 分别连续;
192.168.100.10/24;表示IP为:192.168.100.10;子网掩码为:255.255.255.0;其中有24个1;
四、端口
端口” 是英文 port 的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见,是特指TCP/IP协议中的端口,是逻辑意义上的端口。
例如计算机中的 80 端口、21 端口、23 端口等。物理端口又称为接口,是可见端口,计算机背板的 RJ45 网口,交换机路由器集线器等 RJ45 端口。电话使用 RJ11 插口也属于物理端口的范畴。
如果把 IP 地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门, 一个 IP地址的端口可以有 65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从 0 到65535(2^16-1)。
两个计算机发送数据,实际是在应用软件中进行通信,比如计算机中的QQ在通信,采用端口,相当于内存缓冲区。通过端口号进行进程的编号,计算机的进程很多只有连接好端口号之后,才能进行对应的进程之间进行通信。
端口类型:
1.周知端口(Well Known Ports)也叫知名端口、公认端口或者常用端口,范围从 0 到 1023,它们紧密绑定于一些特定的服务。
2、注册端口(Registered Ports)端口号从 1024 到 49151,它们松散地绑定于一些服务,分配给用户进程或应用程序,这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。
3、动态端口 / 私有端口(Dynamic Ports / Private Ports)动态端口的范围是从 49152 到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。
五、网络模型
5.1 OSI七层模型
七层模型,亦称 OSI(Open System Interconnection)参考模型,即开放式系统互联。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为 OSI 参考模型或七层模型。计算机之间通信,按照这种标准化模型,帮助进行通信。
上层——下层:应用层——物理层;
物理层:主要定义物理设备的标准,比如 网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。其作用:传输比特流,将二进制数转化为电流进行传输,把数据发送过去,接收过来。这一层数据称为比特;
数据链路层:建立逻辑连接,进行硬件寻址、差错校验等。定义如何让格式化数据以帧为单位进行传输。将比特组合成字节进而组合成帧,用MAC地址访问介质,确定唯一的设备。涉及到网卡。
网络层:进行逻辑地址寻址——IP地址,位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。建立两个计算机的网络联系。
传输层:定义了一些传输数据的协议和端口号;找到对应的进程,涉及到一些通信要求(协议)主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求。
表示层:数据的表示、安全、压缩。主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等)。
应用层:网络服务与最终用户的一个接口。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
5.2TCP/IP四层模型
现在 Internet(因特网)使用的主流协议族是 TCP/IP 协议族,它是一个分层、多协议的通信体系。协议族是一组协议,只是TCP/IP协议用到的是最多的,所以称为TCP/IP 协议族。分层是每一层做自己的事情,多协议是可能会有很多种协议。
TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。
应用层:为应用进程提供服务的。
对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了 SMTP 协议、万维网应用使用了 HTTP 协议、远程登录服务应用使用了有 TELNET 协议。应用层还能加密、解密、格式化数据。应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。
传输层:没有发生变化;
网络层:没有发生变化;
网络接口层:兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。
六、协议
协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。
协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。
常见的协议:
应用层常见的协议有:FTP协议(File Transfer Protocol 文件传输协议)、HTTP协议(Hyper TextTransfer Protocol 超文本传输协议)、NFS(Network File System 网络文件系统)。
传输层常见协议有:TCP协议(Transmission Control Protocol 传输控制协议)、UDP协议(UserDatagram Protocol 用户数据报协议)。
网络层常见协议有:IP 协议(Internet Protocol 因特网互联协议)、ICMP 协议(Internet Control Message Protocol 因特网控制报文协议)、IGMP 协议(Internet Group Management Protocol 因特网组管理协议)。
网络接口层常见协议有:ARP协议(Address Resolution Protocol 地址解析协议)、RARP协议(Reverse Address Resolution Protocol 反向地址解析协议)。
UDP协议
源端口号:发方端口号;
目的端口号:接收方端口号;
长度:UDP用户数据包的长度,最小值是9;
校验和:检测UDP用户数据报在传输中是否有错,有错就丢弃;
TCP协议
源端口号:发送方端口号;
目的端口号:接收方端口号;
序列号:本报文段的数据的第一个字节的序号;
确认序号:期望收到对方下一个报文段的第一个数据字节的序号;
首部长度(数据偏移):TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,即首部长度。单位:32位,即以 4 字节为计算单位 。
保留:占 6 位,保留为今后使用,目前应置为 0。
紧急 URG :此位置 1 ,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送。
确认 ACK:仅当 ACK=1 时确认号字段才有效,TCP 规定,在连接建立后所有传达的报文段都必须把 ACK 置1。
推送 PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP 就可以使用推送(push)操作,这时,发送方TCP 把 PSH 置 1,并立即创建一个报文段发送出去,接收方收到 PSH = 1 的报文段,就尽快地(即“推送”向前)交付给接收应用进程,而不再等到整个缓存都填满后再向上交付。
复位 RST:用于复位相应的 TCP 连接。
同步 SYN:仅在三次握手建立 TCP 连接时有效。当 SYN = 1 而 ACK = 0 时,表明这是一个连接请求报文段,对方若同意建立连接,则应在相应的报文段中使用 SYN = 1 和 ACK = 1。因此,SYN 置1 就表示这是一个连接请求或连接接受报文。
终止 FIN:用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放运输连接。
窗口:指发送本报文段的一方的接收窗口(而不是自己的发送窗口)。
校验和:校验和字段检验的范围包括首部和数据两部分,在计算校验和时需要加上 12 字节的伪头部.
紧急指针:仅在 URG = 1 时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),即指出了紧急数据的末尾在报文中的位置,注意:即使窗口为零时也可发送紧急数据.
选项:长度可变,最长可达 40 字节,当没有使用选项时,TCP 首部长度是 20 字节.
IP协议
版本:IP 协议的版本。通信双方使用过的 IP 协议的版本必须一致,目前最广泛使用的 IP 协议版本号为 4(即IPv4)。
首部长度:单位是 32 位(4 字节)。
服务类型:一般不适用,取值为 0。
总长度:指首部加上数据的总长度,单位为字节。
标识(identification):IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段
标志(flag):目前只有两位有意义。
片偏移:指出较长的分组在分片后,某片在源分组中的相对位置,也就是说,相对于用户数据段的起点,该片从何处开始。片偏移以 8 字节为偏移单位。
生存时间:TTL,表明是数据报在网络中的寿命,即为“跳数限制”,由发出数据报的源点设置这个字段。路由器在转发数据之前就把 TTL 值减一,当 TTL 值减为零时,就丢弃这个数据报。
协议:指出此数据报携带的数据时使用何种协议,以便使目的主机的 IP 层知道应将数据部分上交给哪个处理过程,常用的 ICMP(1),IGMP(2),TCP(6),UDP(17),IPv6(41)/
首部校验和:只校验数据报的首部,不包括数据部分。
源地址:发送方 IP 地址。
目的地址:接收方 IP 地址。
封装
上层协议是如何使用下层协议提供的服务的呢?其实这是通过封装(encapsulation)实现的。应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程就称为封装。
分用
当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用(demultiplexing)。分用是依靠头部信息中的类型字段实现的。
封装与分用
网络通信的过程:
举例:两个计算机通过QQ进行通信:
ARP协议:通过IP地址查找对应的MAC地址;
当我们进行通信时,在数据链路层,需要进行以太网帧头进行封装,需要知道目的MAC(网卡)地址,如果这是我们只知道目的端的IP,就需要用到ARP协议通过IP地址查找对应的MAC地址。
上面为AIP报文的组装过程,报文长度为28个字节。
此外,发送出去之前,还需要加上以太网帧的信息。
以太网帧协议:
但是ARP请求并不是给某一个网卡进行报文的发送,而是给所有网卡进行发送。然后每个网卡收到后,解析数据根据内部的发送端IP地址来确定是否是自己的网卡。
目的物理地址写为ff.ff.ff.ff.ff.ff表示给所有机器都发送ARP请求;
源物理地址写为:01.02.03.04.05.06;
类型写为:0x800表示 IP、0x806表示 ARP、0x835表示 RARP;
当接收到ARP请求后,对应的主也需要回应,组成一个上述的包,其中目的物理地址和源物理地址就会发生变化。
总结:本节为网络编程的基础,概念性多,大家以理解为主,记忆为辅。
创作不易,感谢大家多多点赞支持!!!