网络编程及原理(一)
目录
一 . 独立模式与网络互联
二 . 局域网 —— LAN
(1)基于网线直连
(2)基于集线器组建
(3)基于交换机组建
(4)基于交换机和路由器组建
三 . 广域网 —— WAN
四 . 网络通信基础
(1)IP 地址
(2)端口号
五 . 认识协议
(1)为什么需要协议?
(2)协议分层
六 . OSI七层网络模型
七 . TCP / IP 五层网络模型
(1)分层概念
(2)网络设备所在的分层
好久不见各位,今天开始整理一下网络编程及原理这一板块的知识点。
一 . 独立模式与网络互联
什么是独立模式呢?在计算机发展初期,我们的每台计算机之间是相互独立的:
随着我们科技新兴发展,越来越多的计算机操作已经不满足于独立处理信息了,而是更需要计算机之间相互通信,共享软件和数据,即以多个计算机协同工作来完成业务,这就是网络互联的概念由来及其意义所在。
网络互联:将多台计算机连接在一起,实现数据共享。
数据共享的本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。而根据网络互连的规模不同,我们又将其划分成了局域网与广域网。
二 . 局域网 —— LAN
局域网,即 Local Area Network ,简称为 LAN 。Local 一词就表明了局域网是本地的,局部组建的一种私有网络。局域网的主机之间能够方便地进行网络通信,又称为内网。局域网与局域网之间在没有建立连接的情况下是无法进行网络通信的。
局域网组建网络的方式有很多种:
(1)基于网线直连
(2)基于集线器组建
(3)基于交换机组建
(4)基于交换机和路由器组建
三 . 广域网 —— WAN
广域网,即 Wide Area Network ,简称为 WAN 。通过路由器,将多个局域网连接起来,在物理意义上组成了很大范围的网络,这就是 “ 广域网 ”,且广域网内部的局域网都属于它的 “ 子网 ”。
比如说我们开了一家公司,经过一段时间咱们做大做强,再创辉煌了,我们在全国东南西北的各地甚至于海外都有分公司。那么这个时候我们就需要将这些分公司以专线的方式连接起来,这就是我们的广域网。
如果属于全球化的公共型广域网,则称为局域网(又称公网、外网),属于广域网的一个子集,有时候我们口头上说的广域网,其实就是指的是互联网。“ 广域 ”、“ 局域 ” 也只是相对而言的概念。
四 . 网络通信基础
我们进行网络互连的目的就是为了实现网络通信,即网络数据传输,说的更具体一点,就是网络主机中的不同进程间,基于网络传输数据。
那么,在组建的网络中,我们如何判断到底是从哪台主机将数据传输到另一台主机上的呢?这就需要使用 IP 地址来标识了。
(1)IP 地址
IP 地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。例如我们寄 / 收快递一样,物流公司需要知道发件地址和收件地址才能完成运输快递这一操作。
简单来说,IP 地址用于定位主机的网络地址。(描述了一台主机在互联网上所处的位置)
IP 地址是一个 32 位的二进制整数,而为了方便人们阅读理解,我们现在一般采用 “ 点分十进制 ” 来表示 IP 地址。我现在这台电脑的 IPv4 地址就是:
(2)端口号
端口号用于区分当前主机上指定的应用程序,可以识别主机中发送数据、接收数据的进程。例如我们在发送快递时,不光要填写收件地址( IP 地址),还需要指定收货人(端口号)。
简单来说,端口号用于定位主机中的进程。
端口号同样也是一个整数,是一个 2 字节的整数:0 -> 65535(实际上 0 -> 1023 这些端口号都是有一些特殊含义的,已经被占用了,所以咱们在编写代码的时候,一般避免用这些端口号,都是用剩下的)
五 . 认识协议
协议是我们网络中最最最核心的概念,是一切通信的基础。
网络协议简称协议,它是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵循的一组约定、规则。如怎样建立连接,怎样互相识别等等,只有遵守了这个连接,计算机之间才能相互通信交流。
协议的最终体现为在网络上传输的数据包的格式。
(1)为什么需要协议?
举个例子:这就好比咱们网恋奔现,我们是不是得提前约好一个时间,地点,然后到了那天我们还会交流说,我穿的什么样式什么颜色的衣服裤子,你穿的什么样式什么颜色的衣服裤子,这样我们才方便在人潮人海中认出对方是吧,这种提前的约定,在网络数据传输中我们就称之为 “ 协议 ” 。
计算机之间的传输媒介是光信号和电信号,通过 “ 频率 ” 和 “ 强弱 ” 来表示 0 和 1 这样的信息,那么我们想要传递各种不同的信息,由于我们计算机生产厂商有很多,计算机的操作系统也有所不同,计算机的网络硬件设备也是各式各样的,为了让这些不同厂商之间生产的计算机能够互相顺畅地进行数据通信,就需要提前约定好双方的数据格式,不然收到数据怎么解析的懂呢?
(2)协议分层
什么是协议分层呢?由于网络通信是一件非常复杂的事,如果我们使用一个协议,想要约定所有的网络通信细节,那么这个协议就会相当庞大,相当复杂。所以我们采用的是将一个大的协议拆分成很多个小协议,让每个小协议专注于解决一个或一类问题,再让这些小协议之间互相配合。
将这些拆分出的来的小协议按照功能分类一层一层的,这就是我们的 “ 协议栈 / 协议族 ”,并且约定好,协议之间,不能不能随意交互,只有相邻的层之间才可以。上层协议调用下层协议,下层协议为上层协议提供服务。
协议分层的好处:
1 . 降低了使用成本,在使用某个协议的时候,不需要关注其他协议的实现细节。
2 . 降低了整个体系的耦合性,灵活地变动某个层次的协议。
六 . OSI七层网络模型
OSI七层网络模型即 Open System Interconnection,开放系统互连。
(1)OSI七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分成了 7 层。
(2)OSI七层网络模型是一种框架性的设计方式,其最主要的功能就是可以帮助不同类型的主机实现数据传输。
由于OSI七层网络模型既复杂又不实用,所以它并没有落地实现,这种划分方式,只存在于教科书里,并没有被真正地采纳。
七 . TCP / IP 五层网络模型
(1)分层概念
TCP / IP 五层网络模型是当前世界上最主流的网络协议模型。
TCP / IP 是一组协议的代名词,它还包括许多协议,共同组成了TCP / IP 协议族。
TCP / IP 通讯协议采用 5 层的层级结构,每层都呼叫其下一层所提供的网络来完成自己的需求。
(1)应用层:负责应用程序之间的沟通。如简单的电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层来展开的。
(2)传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机。
(3)网络层:负责地址管理和路由选择。例如在 IP 协议中,通过 IP 地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。(路由器工作在网络层)
(4)数据链路层:负责设备之间的数据帧的传送与识别。例如网卡设备的驱动,帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网、无线 LAN 等标准。交换机(Switch)工作在数据链路层。
(5)物理层:负责光电信号的传递方式。比如现在以太网通过的网线(双绞线)、早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤,现在的 WiFi 无线网使用电磁波都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
传输层、网络层、数据链路层、物理层这四层是我们程序员干涉不了的,操作系统或硬件设备已经实现好了。只有应用层是程序员能干预的到的。
(2)网络设备所在的分层
1 . 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也就是 TCP / IP 协议的下四层。
2 . 对于一台路由器,它实现了从网络层到物理层,也就是 TCP / IP 协议的下三层。
3 . 对于一台交换机,它实现了从数据链路层到物理层,也就是 TCP / IP 协议的下两层。
4 . 对于集线器,它只实现物理层。
注意这里我们说的只是传统意义上的路由器和交换机,也称为二层交换机,三层路由器。但是随着我们网络设备技术的不断发展,现在的真实情况是:交换机也可能工作在网络层,甚至是传输层或应用层;路由器也可能工作在数据链路层,甚至是传输层或应用层。
OKK,今天咱们就先说到这里吧,网络原理及编程这一板块的知识点也是相当庞大,也会连续做很多期,今天只是初识网络原理而已,其中最重要的就是网络协议:TCP / IP 五层网络模型,这一板块后续会深度剖析讲解。咱们下期再见咯,与诸君共勉!!!