网络编程之初识

目录

前言

发展史

网络互连

局域网(LAN)

广域网(WAN)

网络通信基础

IP地址

特殊IP地址

端口号

网络协议

协议的作用

五元组

协议分层

含义

OSI七层模型

TCP/IP五层协议

网络设备所在分层

封装和分用

发送方

接收方


前言

在这个科技发达的时代,计算机网络已经渗透到我们生活的方方面面,我们所使用的手机以及计算机等通信设备,都需要网络的支持才能互联,今天我就带大家了解什么是计算机网络。

发展史

既然想要了解什么是计算机网络,那么我们首先得了解一下计算机网络的发展史,网络的发展史大致可以划分为四个阶段:

  1. 面向终端的计算机网络。在这个阶段的计算机网络以单台计算机为中心,是网络的中心和控制者,终端围绕中心计算机分布在各处,呈分成星型结构,各终端通过通信线路来共享主机的硬件和软件资源,计算机的主要任务还是进行批量处理,在20世纪60年代之后,出现了分时系统,则具有了交互处理和成批处理的能力。                                                                      特点:由单个具有自主处理功能的计算机和多个没有自主处理功能的终端组成的网络。
  2. 多台计算机互联的计算机网络。在这个阶段,是通过分组交换网来实现的。分组交换网是由通信子网和资源子网组成的,以通信子网为中心,不仅共享通信子网的资源,而且共享资源子网的硬件和软件资源。                                                                                                           特点:由多个具有自主处理功能的计算机组成独立的网络系统。
  3. 面向标准化的计算机网络。为了使不同体系结构的计算机网络能够互联,国际标准化组织ISO提出了一个能使计算机在世界范围内互联成网的标准框架--OSI模型。                               特点:由多个计算机组成容易实现网络之间互联连接的开放式网络系统。
  4. 面向全球互联的计算机网络。从20世纪90年代开始,互联网快速发展,使得信息在全球范围内得以快速传播。

网络互连

随着时代的发展,越来越需要计算机之间互相通信,共享软件组员和数据,即以多个计算机协同工作来完成业务就有了网络互连。

网络互连其实就是将多台计算机连接在一起,完成数据共享。数据共享的本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。 

我们可以根据网络互连的规模不同,可以划分为局域网和广域网

局域网(LAN)

局域网是指在某一特定内由多台计算机组成的互联网组。局域网的覆盖范围一般是几千米以内,比如在同一栋建筑或者相邻的几栋建筑内。局域网可以实现文件管理、应用软件共享、打印机共享等功能。

局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:

  1. 基于网线互连
  2. 基于集线器组建
  3. 基于交换机组建 
  4. 基于交换机和路由器组建  

广域网(WAN)

广域网(Wide Area Ntework)其实就是通过路由器将多个局域网连接起来,利用电话线、光纤、卫星、微波等长距离传输技术,在物理上组成很大范围的网络。 覆盖的范围在几十公里到几千公里甚至更多。能够连接多个地区、城市乃至国家,甚至可以跨越整个大陆。

广域网的通信子网主要采用分组交换技术,可以利用公用分组交换网、卫星通信网和无线分组交换网,将分布在不同地区的局域网或者计算机系统连接起来,实现资源共享。

广域网主要用于企业、政府机构、教育机构等组织之间的远程通信。

注意:广域网并不等同于互联网,如果属于全球化的公共型广域网,则称为互联网。

如果属于全球化的公共型⼴域网,则称为互联网(⼜称公网,外网),属于⼴域⽹的⼀个⼦集。 有时在不严格的环境下说的⼴域网,其实是指互联网。

所谓"局域网"和"广域网"只是⼀个相对的概念。比如,我们有"天朝特色"的⼴域网,也可以看做 ⼀个比较大的局域网。 

网络通信基础

网络互连的目的其实就是为了进行网络通信,即网络数据传输,更具体一点,就是网络主机中的不同进程间,基于网络传输数据。那么在组建的网络中,如何判断是从哪台主机,将数据传输到哪台主机上的呢?这就需要通过IP地址来进行标识。

IP地址

IP地址(Internet Protocol Address)是互联网协议地址的简称,主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单来说,IP地址用于定位主机的网络地址。IP地址有两种形式:IPv4(32位,四组八位二进制数)和IPv6(128位,八组四位十六进制数)

就像我们发快递一样,需要知道堆放点地址,快递员才能将包裹送达到目的地。

在计算机中,每台电脑都有其对应的IP地址,IP地址是一个32位的二进制数,通常被分割为4组“8位二进制数”(也就是4个字节),例如:01100100.00000100.00000101.00000110。通常采用“点分十进制”的方式来进行表示,即a,b,c,d的形式(a,b,c,d都是0~255的十进制整数)。如100.4.5.6。

IP地址有两种类型:公有地址和私有地址

公有地址是全球互联网内独一无二的IP地址,可以直接访问互联网。

私有地址是指在局域网内使用的IP地址,不会出现在互联网上。

特殊IP地址

环回地址(Loopback Address)是一种特殊的IP地址(127.0.0.1~127.255.255.254).允许计算机软件组件在本机上进行网络通信,也称为本地环回地址。在计算机网络中,环回地址是一个虚拟地址,不属于任何网络,而是指向自己的计算机。所以,当我们使用环回地址发送数据时,数据会在本地计算机上循环,并不会被发送到其他计算机网络上。常用来调试和测试网络软件。

端口号

既然IP地址解决了在网络通信中定位主机的问题,那么数据由主机中的哪个进程来接收呢?这就需要用到端口号来标识。

端口号是网络通信中用于标识服务的整数,类似发送快递中,不仅需要指定收货地址(IP地址),而且还需要指定收货人(端口号).

在网络通信中,主机需要使用端口号来识别和连接不同的应用程序和服务,每个应用程序都有一个独立的端口号。

端口号有两种:物理端口号和逻辑端口号物理端口号是指实际存在的硬件接口,用于连接网络设备,如计算机、路由器、交换机上用于连接其他网络设备的接口等。逻辑端口号是在TCP/IP协议中用于标识特定服务或应用程序的数字标识符

逻辑端口号(0~65535)里又分为三类:

  • 知名端口号(0~1023):用于众所周知的服务,如HTTP(80)、HTTPS(443)、FTP(21)等。
  • 注册端口号(1024~49151):用于已经被注册的应用程序或服务,如MySQL(3306)等。
  • 动态或私有端口号(49152~65535):用于临时或自定义的应用程序或服务,通常由操作系统动态分配。

两个不同的进程不能绑定同一个端口号,但是一个进程可以绑定多个端口号。

有了端口号和IP地址,就可以定位到网络中唯一的一个进程,但是还存在一个问题,网络通信是基于二进制传输的,那么如何告诉对方发送的数据是什么样的呢?网络通信传输的数据类型有很多种:图片、视频、文本等。同一个类型的数据,格式也可能不同,如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型及文本的编码方式呢?

基于网络数据传输,需要使用协议来规定双方的数据格式。

网络协议

网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵循的一组规定、规则。例如,你在网上和一个网友约定好了在哪里见面,但是如果地方人太多,就有可能找不到对方人在哪,最终错过。所以,在见面之间,可以约定好对方各自穿什么衣服,就比如网友穿一件红色的衣服拿着一支玫瑰,那这样就能快速找到对方了。

网络协议是由三个要素组成:

  • 语义,定义了协议中的信息含义
  • 时序,定义了时间的先后顺序。
  • 语法,定义了协议信息的格式和传输方式,

协议的作用

  • 标准化通信:定义了数据传输的标准格式和流程,确保不同设备之间能够按照统一的规则进行通信,
  • 数据传输:定义了如何将数据封装成数据包或数据段,以便在网络中传输,
  • 错误检测与纠正:许多协议使用校验和来检测数据传输过程中可能发生的错误,一些协议(TCP等)提供了重传机制来纠正错误。
  • 路由选择:网络层协议(如IP)负责选择数据包的最佳路径,确保数据能够到达正确的目的地。
  • 安全保障:某些协议(如HTTPS)提供了数据加密功能,保护数据免受窃听。

五元组

在TCP、IP协议中,用五元组来标识一个网络通信:

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发生数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式。

我们可以通过一个例子来了解为什么网络通信需要五元组。假如我从淘宝上买了一样东西,那我们就把我们个人的收件地址信息传给了商家。商家就把物品打包并把收件地址信息一同发送给快递公司。这里的收件地址信息就是目的IP。当快递员送到我所在的小区,此时还需要具体的地址和电话,这里就相当于目的端口号。快递公司是发顺丰还是中通,这就相当于协议。对应的,商家的地址就相当于源IP、商家的姓名和电话就相当于源端口号

协议分层

为什么需要协议分层,网络通信场景是非常复杂的,有许多地方都需要用到协议,如果我们用一个协议去处理所有需要用到协议的场景,那么这个协议就会非常复杂,不利于我们后序进行理解,所以我们就需要用到协议分层,每个场景都有对应的协议。

含义

协议分层是网络协议的一种实现方式,通过将复杂的网络通信过程简化成不同的层次或模块来简化问题。每一层负责执行特定的功能,并为上一层提供服务。

优点:

  • 分解复杂性:通过将复杂的网络通信过程分解为多个逻辑层,每一层关注特定的功能即可。
  • 灵活性:当其中一层的技术发生变化时,只要层间的接口保持不变,其他层不会受到影响。
  • 标准化:每一层可以独立制定标准,便于不同厂商的产品能够在同一层实现互操作。
  • 易于实现和维护:每一层的功能相对简单,易于实现和维护。

协议分层具有概念化和结构化的特点,每个层次都有其特定的功能和职责,上层协议调用下层协议,下层协议为上层协议提供服务。不同层次的协议通过接口进行通信,并且每一层对其下层提供的服务进行抽象和封装。

  • 对于使用方来说,并不用关心提供方是如何实现的,只需要使用接口即可。
  • 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。

我们可以来举个例子,我开了一家烧烤店,雇佣了两个人,但后面来我店的人越来越多了,就开了连锁店,随着连锁店越来越多,此时雇佣的店员也就越来越多,这些店员我是管不过来的,所以我们就给每个店招进一个店长,来管理店里的店员以及生意,而我只需要 管理这些店长即可。这样就能减轻我的负担,并同时达到管理的目的。

依据协议分层,提出了两个模型:OSI七层模型TCP/IP五层模型

OSI七层模型

OSI七层模型是一种开放式系统互联通信参考模型,由国际标准环组织ISO提出,旨在为网络通信提供一个通用的参考模型。需要注意,随着时代的发展,OSI已经被TCP/IP模型淘汰,对于OSI,人们根据功能不同,分工不同,人为的将OSI分成七层,实际这七层是不存在的,我们这里讲解的七层模型,主要是为了更好地理解这些是用来干嘛的。

OSI将计算机网络体系架构划分为七层:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层

应用层为用户应用程序和网络之间的接口,负责数据的发送和接收;表示层负责数据格式的转换(加密等);会话层负责允许用户建立连接;传输层负责提供连接;网络层负责决定数据传输的路径;数据链路层为通信实体建立数据链路连接。物理层负责为数据端设备提供原始的比特流的传输的通路。

每一层负责一项具体的工作,然后数据由高层向低层传送,分别做相应的处理。OSI七层模型的功能和应用非常广泛,它是网络通信的基础之一,也是计算机网络体系结构的重要组成部分。

 该模型只出现在教科书中,实际我们使用的TCP/IP五层协议。

TCP/IP五层协议

TCP/IP协议是一组协议的代名词,还包括了许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了五层的分层结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  1. 应用层:负责应用程序间沟通,关注的是 传输的数据在应用程序中如何使用。如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
  2. 传输层:负责两台主机之间的数据传输,关注的是传输的起点和终点。如传输控制协议(TCP)、能够保证数据可靠的从源主机发送到目标主机。
  3. 网络层:负责地址管理和路由选择,关注的是通信中的路径规划。在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网络层。
  4. 数据链路层:负责设备之间的数据帧的传送和识别,关注的是相邻结点的通信细节。例如,网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。
  5. 物理层:负责光/电信号的传递方式,是网络通信的基础设施。例如,现在的以太网通用的网线(双绞线)、早起以太网采用的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网视同电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

我们可以来举个例子来理解TCP/IP各层的作用。

当我在网上买了一件商品后,在提供完我的地址和号码(即目的IP和目的端口号),商家就会根据我所要买的东西进行打包,贴上快递单,这个快递单上有着我的地址和号码,同样也有商家发货的地址和号码(即源IP和源端口号)还有指定的某家快递公司(协议类型)。我在网上买了商品这个行为属于应用层。而商家根据我提供的地址,确定了发货的目的地,属于传输层的作用确定数据传输的起始位置。当快递到达快递公司后,快递公司会规划好路线,选择能够最快送达到我手里的路径进行传输。这个规划路线,选择最优路径就属于网络层,当快递公司确定好路线后,就会将这个快递包裹给快递小哥,而快递小哥会根据选择的路线进行传输,当然,运输的方式也是有许多种。两个节点之间的数据传输路线以及数据传输方式就是数据链路层要做的事情。而物理层就是运输装备,例如大卡车、小三轮等。物理层是网线和信号塔这些硬件设施,当快递成功送到我手上,我想要怎么用,这就是属于应用层的事情了。

网络设备所在分层

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也就是TCP/IP五层模型的下四层
  • 对于一台路由器,实现了从网络层到物理层,也就是TCP/IP五层模型的下三层
  • 对于一台交换机,实现了从数据链路层到物理层,也就是TCP/IP五层模型的下两层
  • 对于集线器,只实现了物理层

注意:我们这里说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)。

什么是交换机呢?

换机(Switch)是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。常见的交换机是以太网交换机、电话语音交换机和光纤交换机等。

根据数据传输的需求,自动选择合适的数据传输路径的技术,这种技术称为交换技术。 

根据工作的位置不同,可以分为广域网交换机和局域网交换机。广域网交换机应用于数据链路层,能够完成信息交换功能的设备在通信系统中,局域网交换机用于局域网组网拘束,网络交换机最为普及。

我们现在家里基本上都有路由器了,路由器的网口有5个,并且这五个网口的作用是不同的:

  • 1个WAN口,用于连接上级路由器
  • 4个LAN口, 用于连接本地电脑

如果我们家里的电脑很多个,那么4个LAN口是不够用的,所以我们就需要使用交换机来连接LAN口后,进行扩展LAN口。那么我们能够连接的电脑就越多了。

封装和分用

封装和分用描述了在网络通信中数据传输的基本流程。

  • 不同的协议层对数据包有不同的称谓,在传输层叫做数据段(segment),在网络层叫做数据报(datagram),在数据链路层叫做数据帧(frame)。
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一份数据首部(header),称为封装(Encapsulation)。
  • 首部信息中包含一些类似于首部有多长,载荷(playload)有多长,上层协议是什么等信息
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理

我们可以通过一个例子来理解一下上面这个封装和复用的过程。

假设现在有人给我发送了一条QQ信息:“你好世界”

发送方

1.应用层

当我们发送信息时,这个信息会根据应用层协议也就是程序员规定的协议将这个数据打包成一个应用层的数据包。假设应用层协议约定的数据包格式如下:

四个字段,用分号;隔开,这样就构成了一个数据包(字符串拼接),上面的几个字段分隔开以及用什么分隔开是可以变化的,当把数据打包好,此时就应用程序就会调用操作系统提供的API,把数据包交给传输层。

2.传输层

当传输层接收到应用层传过来的应用层数据包之后,传输层也会对数据包进行再次打包,其实本质上就是字符串的拼接,但传输层所用的协议是不同的,传输层常用的协议是TCP协议和UDP协议。以UDP为例,假设此处使用的是UDP来进行通信,那么就会构建出一个UDP数据包。

UDP报头中的数据是二进制数据,UDP报头中主要包含了源端口和目的端口的信息。当传输层数据包构建好了之后,会继续传输给网络层。

3,网络层

网络层中典型的协议是IP协议。

同样的,IP报头中主要包含了源IP和目的IP等信息 。当构造完成IP数据包之后,IP协议会调用数据链路层的API,将这个数据交给数据链路层进行传输。

4.数据链路层

数据链路层中典型的协议就是以太网协议。

在IP数据包的基础上,添加上帧头和帧尾,以太网帧头主要包含了MAC地址等重要信息,MAC地址也是用来描述一个设备在网络上的地址,当数据链路层构造好数据帧后,会把这个数据传给物理层进行传输。

5.物理层

当物理层拿到数据链路层的数据帧后,会将该数据帧转换成二进制数据,并通过光/电信号/电磁波进行传输。当数据发出之后,因为发送方和接收方一般不是直接用网线连接的,中间还需要经过许多的路由器和交换机进行转发。直到找到接收方的位置。以上就是对数据封装的过程,当接收方拿到数据之后,就会对数据进行"分用"处理。

接收方

1.物理层

当接收方接收到数据,会先经过物理层,将接受到的光/电信号或电磁波,将这些物理信号转换成数字信号(二进制的0/1)得到一个以太网数据帧,进一步将数据帧交给数据链路层进行处理。

2.数据链路层

通过以太网协议,针对对以太网数据帧进行解析。拿出帧头、帧尾和载荷,根据报头中的信息做一些处理。根据这个以太网报头中的 MAC 地址决定将以太网载荷传递给目的地址,也就是网络层。

3.网络层

通过IP协议,针对数据包进行解析,解析出IP报头和IP载荷,并根据IP报头中的目标IP将IP载荷传给传输层。

4.传输层

当经过传输层的时候,会根据UDP协议对数据包进行解析,解析出UDP报头和UDP载荷,并且根据UDP报头中的端口号将UDP载荷传给对应的应用层。

5、应用层

当数据传输到应用层的时候,会通过指定的端口号将数据传输到QQ上,按照QQ内部的应用层协议来解析数据。

QQ程序拿到这些信息后,就会在窗口中弹出提示,并且把信息/信息的发送者/发送时间都显示到聊天窗口上。


以上就是本篇所有内容,若有不足,欢迎指正~ 

  • 35
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪同学hy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值