对于域名和端口,我在
Linux学习笔记9——远程管理常用命令
中做了简单介绍,但是要讲清楚端口的概念就不得不讲讲计算机网络与通信的相关内容。
我们知道,世界上有各种各样的计算机操作系统 ,各种各样的编码方式,那么我们要实现全球的通信,是不是要建立一个普适的网络模型,来满足各种各样不同的计算机之间的通信需求?这时,TCP/IP协议定义的网络模型和国际标准化组织ISO定义的OSI(Open System Interconnection开放式系统互联)模型就应运而生了。TCP/IP协议要早于OSI模型,并且现实生活中主要用到的是TCP/IP协议,OSI模型几乎没有实现过,不过OSI模型仍有其理论价值。
1.OSI模型
OSI模型定义了七个层,每个层提供不同的服务并且将功能封装起来供上一层使用。
这张图表示了每个层传输的数据单元名称以及每一层用到的协议
这张图表示在最高层是原始数据,每往下一层就需要封装一次,传输的数据单元就会越来越大。
2.TCP/IP
TCP/IP协议是四层模型,它与OSI模型的对比如下
TCP/IP四层模型由上到下我们也通常称为:应用层、传输层、网络层、数据链路层。
在简单了解了网络模型的层次,我们看看计算机之间是怎么来通信的吧!
3.寻址
大家都知道,逛淘宝买东西需要提供什么呀?自己的收货地址!不论是显示生活中的信件、快递还是网络中计算机之间的通信,我们都需要地址对吧,地址其实在计算机网络通信里占有非常重要的地位。想想生活中你的家是不是有一个唯一的地址?其实每台计算机也有它唯一的地址——IP地址(逻辑地址)。比如百度服务器(一台性能很好的计算机)的IP地址220.181.112.244,它的别名,也就是域名为www.baidu.com。
其实我们熟知的IP地址只是地址的一种,它工作在网络层,在传输的过程中是不可变的。
地址分为四种:
物理地址
、
逻辑地址
、
端口地址
和
专有地址
。
a.物理地址
物理地址工作在最底层,即
数据链路层和物理层
的
帧
(frame,一种数据单位,由比特构成)中,它每一次传输都会改变,比如从帧A一台计算机a到一个路由器b使用了一组地址,该帧A在路由器b到路由器c中就会换另一组地址,
它是可变的
。
b.逻辑地址
即世界上所有的计算机都有一个32位的地址(IPv4),它唯一的表示每一台计算机,后来IPv4地址不够用了,就出现了IPv6地址,128位长。只需记住一点,无论IPv4还是IPv6地址都是逻辑地址,它们是唯一的表示一台计算机的IP地址。它工作在
网络层
,在传输的过程中是不会变的。
c.端口地址
我们通过逻辑地址实现了计算机之间的通信,但是这样并没有什么意义,比如你在打英雄联盟,这时你需要把数据传输到其他玩家的计算机上还是传输到其他玩家的英雄联盟上呢?你打出了100点伤害,这样一个数字,传到计算机上毫无意义,但是传输到英雄联盟中,英雄联盟就知道你造成了100点伤害,并在游戏里计算。这样一个简单的例子说明
计算机之间的通信实质
上是
不同计算机之间
进程
的通信。而端口号就是唯一的表示这些进程的编号。
(进程:运行着的程序)端口号有16位,0到65535,一共有2^16个端口号。
通过端口号可以找到计算机运行的应用程序
。如Web服务器对应的端口号是80,我们通过80端口实现了上网的功能。端口地址工作在
传输层
,在传输的过程中是不会变的,端口地址就是端口号。
d.专用地址
最典型的例子就是邮箱地址,每个邮箱被邮箱地址唯一指定,它会被转换成对应的端口地址和逻辑地址进行传输。专用地址工作在
应用层
,在传输的过程中是不会变的。
我们可以发现,计算机地址分为4类刚好对应 TCP/IP4层模型,由上到下分别为:
- 专用地址——应用层
- 端口地址——传输层
- 逻辑地址——网络层
-
物理地址——数据链路层和物理层
4.端口
所以我们常说的
端口
指的是我们访问主机上的
某一进程的标识号
,通过
端口实现了计算机之间进程的通信
。例如,我们访问百度主页,实际上是我们计算机上的浏览器这一进程访问百度服务器(一台计算机)上的Web服务器(一款软件,也就是一个大型程序)进程。
Web服务器对应的端口号是80。就是说我们访问一个Web页面的
正确输入
应该是
IP:80
。比如百度服务器(一台计算机)的IP地址220.181.112.244,也可以通过域名www.baidu.com访问(域名就是IP地址的),要访问百度页面(百度服务器上的Web程序)正确的输入应该是
220.181.112.244:80
或
www.baidu.com:80
。而我们通过在浏览器上输入www.baidu.com就能访问百度页面的原因是
浏览器默认访问80端口
。