计算机通信地址【图解TCP/IP(笔记六)】

简介: 计算机通信地址【图解TCP/IP(笔记六)】

地址

通信传输中,发送端和接收端可以被视为通信主体。它们都能由一个所谓“地址”的信息加以标识出来。当人们使用电话时,电话号码就相当于“地址”。当人们选择写信时,通信地址加上姓名就相当于“地址”。

现实生活当中的“地址”比较容易理解,然而在计算机通信当中,这种地址的概念显得要复杂一些。因为在实际的网络通信当中,每一层的协议所使用的地址都不尽相同。例如,TCP/IP通信中使用MAC地址、IP地址、端口号等信息作为地址标识。甚至在应用层中,可以将电子邮件地址作为网络通信的地址。


地址的唯一性

如果想让地址在通信当中发挥作用,首先需要确定通信的主体。一个地址必须明确地表示一个主体对象。在同一个通信网络中不允许有两个相同地址的通信主体存在。这也就是地址的唯一性。7fb37bc1e384438489f6fb4cb7ce0ccf.jpg


前面提到,在同一个通信网络中不允许有两个相同地址的通信主体存在。这在单播通信中还好理解,因为通信两端都是单一的主机。那么对于广播、多播、任播通信该如何理解呢?岂不是通信接收端都被赋予了同一个地址?其实,在某种程度上,这样理解有一定的合理性。在上述这些通信方式中,接收端设备可能不止一个。为此,可以对这些由多个设备组成的一组通信赋予同一个具有唯一特性的地址,从而可以避免产生歧义,明确接收对象。


举个简单的多播的例子。某位老师说:“一年一班的同学们请起立!”其中,“一年一班”实际上就明确地指代了目标对象。此时,“一年一班”就是这一次“多播”的目标地址,具有唯一性。


再举一个任播的例子。老师又说:“一年一班的哪位同学过来把你们班的学习资料取走!”此时“一年一班的哪位同学”(任意一位同学)就成为了此次“任播”的目标地址,具有唯一性(再例如,航班飞行途中有一位乘客突然发病,此时空姐会询问“有哪一位乘客是医生,我们需要您的帮助”。这里的“有哪一位乘客是医生”,其实就是在向所有是医生的乘客发出消息,希望哪怕只有一位乘客是医生也帮得上忙。这是任播的另一个例子。) 。

37eedd82530f4a55ad0633e8d4e84f31.jpg


地址的层次性

当地址总数并不是很多的情况下,有了唯一地址就可以定位相互通信的主体。然而,当地址的总数越来越多时,如何高效地从中找出通信的目标地址将成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。其实,在使用电话和信件通信的过程当中,早已有了地址分层这种概念。例如,电话号码包含国家区号和国内区号,通信地址包含国名、省名、市名和区名等。正是有了这种层次分类才能更加快速地定位某一个地址。

MAC地址和IP地址在标识一个通信主体时虽然都具有唯一性,但是它们当中只有IP地址具有层次性。

106221f745504da782e33d32d46b4f77.jpg

MAC地址由设备的制造厂商针对每块网卡(NIC(Network Interface Card),也叫网卡,是计算机连网时所使用的部件。) 进行分别指定。人们可以通过制造商识别号、制造商内部产品编号以及产品通用编号确保MAC地址的唯一性。然而,人们无法确定哪家厂商的哪个网卡被用到了哪个地方。虽然MAC地址中的制造商识别号、产品编号以及通用编号等信息在某种程度上也具有一定的层次性,但是对于寻找地址并没有起到任何作用,所以不能算作有层次的地址。正因如此,虽然MAC地址是真正负责最终通信的地址,但是在实际寻址过程中,IP地址却必不可少。


那么IP地址又是怎样实现分层的呢?一方面,IP地址由网络号和主机号两部分组成。即使通信主体的IP地址不同,若主机号不同,网络号相同,说明它们处于同一个网段。通常,同处一个网段的主机也都属于同一个部门或集团组织。另一方面,网络号相同的主机在组织结构、提供商类型和地域分布上都比较集中,也为IP寻址带来了极大的方便 。这也是为什么说IP地址具有层次性的原因。


网络传输中,每个节点会根据分组数据的地址信息,来判断该报文应该由哪个网卡发送出去。为此,各个地址会参考一个发出接口列表。在这一点上MAC寻址与IP寻址是一样的。只不过MAC寻址中所参考的这张表叫做地址转发表,而IP寻址中所参考的叫做路由控制表(目前,地址转发表和路由控制表并不需要在网络中的各个节点上手动设置,而是由这些节点自动生成的。地址转发表根据自学自动生成。路由控制表则根据路由协议自动生成。) 。MAC地址转发表中所记录的是实际的MAC地址本身,而路由表中记录的IP地址则是集中了之后的网络号(确切的说,是网络号与子网掩码。) 。

24731a621e4d419c847abaf16dbbe19e.jpg


相关文章
|
3月前
|
网络协议 安全 网络安全
网络编程:基于socket的TCP/IP通信。
网络编程:基于socket的TCP/IP通信。
239 0
|
5月前
|
网络协议 安全 Java
Java网络编程入门涉及TCP/IP协议理解与Socket通信。
【6月更文挑战第21天】Java网络编程入门涉及TCP/IP协议理解与Socket通信。TCP/IP协议包括应用层、传输层、网络层和数据链路层。使用Java的`ServerSocket`和`Socket`类,服务器监听端口,接受客户端连接,而客户端连接指定服务器并交换数据。基础示例展示如何创建服务器和发送消息。进阶可涉及多线程、NIO和安全传输。学习这些基础知识能助你构建网络应用。
50 1
|
网络协议 网络架构 数据格式
协议分层与OSI参考模型【图解TCP/IP(笔记三)】
协议分层与OSI参考模型【图解TCP/IP(笔记三)】
160 0
协议分层与OSI参考模型【图解TCP/IP(笔记三)】
|
网络协议 大数据 网络架构
网络协议【图解TCP/IP(笔记二)】
网络协议【图解TCP/IP(笔记二)】
105 0
|
运维 网络协议 安全
计算机与网络发展的7个阶段【图解TCP/IP(笔记一)】
计算机与网络发展的7个阶段【图解TCP/IP(笔记一)】
148 0
|
6月前
|
网络协议 安全 Java
Java网络编程入门指南:TCP/IP协议与Socket通信
Java网络编程入门指南:TCP/IP协议与Socket通信
151 1
|
SQL 网络协议 前端开发
🚀超级简单的图解TCP/IP,看不懂来打我:OSI模型与通信示例🚀
🚀超级简单的图解TCP/IP,看不懂来打我:OSI模型与通信示例🚀
|
网络协议 Unix
TCP/IP出现的背景及其历史【图解TCP/IP(笔记八)】
TCP/IP出现的背景及其历史【图解TCP/IP(笔记八)】
838 0
TCP/IP出现的背景及其历史【图解TCP/IP(笔记八)】
|
网络协议 安全 网络安全
前方高能!阿里P8撰写的30W字TCP/IP协议进阶笔记:GitHub标星96k
什么是TCP/IP协议 TCP/IP协议是一个协议集合。 互联网协议是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族,简称TCP/IP。因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。
73 0
|
网络协议 Unix 网络性能优化
两种传输层协议TCP和UDP【图解TCP/IP(笔记十二)】
两种传输层协议TCP和UDP【图解TCP/IP(笔记十二)】
161 0