头图
当你停下来休息的时候别忘了别人还在奔跑

计算机之间是如何通信的?

早期:联机

img

以太网 : 局域网与交换机

img

IP地址和IP协议

  • 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示;
  • IP地址就像是我们的家庭住址一样,如果你要写信给一个人,你就要知道他(她)的地址,这样邮递员才能把信送到;
  • 范围0.0.0.0-255.255.255.255;
  • 一个ip地址通常写成四段十进制数,例:192.168.1.1

IP地址划分类

其中A、B、C3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址。

分类IP地址范围私有IP地址范围
A类1.0.0.0~127.255.255.25410.0.0.0--10.255.255.255
B类128.0.0.1~191.255.255.254172.16.0.0--172.31.255.255
C类192.0.0.1~223.255.255.254192.168.0.0--192.168.255.255

但是随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了,而A类却浪费了大量地址。
针对这种情况提出了新的划分方案, 称为CIDR(Classless Interdomain Routing)

域名

尽管==IP地址==能够唯一地标记网络上的计算机,但IP地址是一长串数字,不直观,而且用户记忆十分不方便,于是人们又发明了另一套字符型的地址方案,即所谓的域名地址。IP地址和域名是一一对应的,这份域名地址的信息存放在一个叫域名服务器(DNS,Domain name server)的主机内,使用者只需了解易记的域名地址,其对应转换工作就留给了域名服务器。域名服务器就是提供IP地址和域名之间的转换服务的服务器。

一个 IP 地址可以对应多个域名,一个域名只能对应一个 IP 地址。

例如当用户在浏览器输入域名时,浏览器首先请求 DNS 服务器,将域名转换为 IP 地址,然后将转换后的 IP 地址反馈给浏览器,然后再进行实际的数据传输。

一般情况DNS服务器正常运行的时候,我们用域名或者IP地址都能连接到网络中的设备,但是DNS服务器挂了的时候,你就会发现只能使用IP地址来访问该设备了,所以IP地址其实比域名更加的通用。

端口

如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
  • 同一个计算机中每个程序对应唯一的端口,这样一个计算机上就可以通过端口区分发送给每个端口的数据了,换句话说,也就是一个计算机上可以并发运行多个网络程序,而不会互相之间产生干扰。在硬件上规定,端口的号码必须位于 0-65535 之间,每个端口唯一的对应一个网络程序,一个网络程序可以使用多个端口。
  • 一个网络程序运行在一台计算上时,不管是客户端还是服务器,都是至少占用一个端口进行网络通讯。在接收数据时,首先发送给对应的计算机,然后计算机根据端口把数据转发给对应的程序。

网络通讯

网络通讯基于“请求-响应”模型。
  • 在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。
  • 一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。
  • 其实很容易就理解客户端和服务器端的,QQ,我们用的腾讯的,在我们这里就是客户端程序,而服务器端程序在腾讯那边,为大量的QQ用户服务,这种网络编程结构也成为客户端/服务器结构,C/S结构。
  • 实在运行很多程序时,没有必要使用专用的客户端,而需要使用通用的客户端,例如浏览器,使用浏览器作为客户端的结构被称作浏览器/服务器结构,也叫做 Browser/Server 结构,简称为 B/S 结构。

协议

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

网络编程就是运行在不同计算机中两个程序之间的数据交换。在实际进行数据交换时,为了让接收端理解该数据,计算机比较笨,什么都不懂的,那么就需要规定该数据的格式,这个数据的格式就是协议。

在实际的网络程序编程中,最麻烦的内容不是数据的发送和接收,因为这个功能在几乎所有的程序语言中都提供了封装好的 API 进行调用,最麻烦的内容就是协议的设计以及协议的生产和解析,这个才是网络编程中最核心的内容。

通讯方式

在现有的网络中,网络通讯的方式主要有两种:

  1. TCP(传输控制协议)方式
  2. UDP(用户数据报协议)方式

在网络通讯中,TCP 方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据;而 UDP 方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。

两者区别:

  • 重要数据使用TCP方式进行传输;
  • 大量的非核心数据使用UDP方式进行传输;
  • 由于TCP方式需要建立专用的虚拟连接以及确认传输是否正确,所以使用 TCP 方式的速度稍微慢一些,而且传输时产生的数据量要比 UDP 稍微大一些。

初念初恋
175 声望17 粉丝