两台主机之间如何相互通信

一、基本概念

1.Ip地址:用于识别网络主机、其他网络设备的网络地址。定位主机的网络地址。

32位的二进制数据。一般用点分十进制的形式表示:例:192:168:0:1.(0-255之间的数据)

2.端口号:用于定位主机中的进程。

3.协议:在不同主机通信的过程中,双方进行数据交换而制定的一种规则、约定。

4.协议分层:

在计算机网络中,用一个协议约定双方的通信规则,太过于复杂。即使用协议分层的形式。

协议分层的特点是:(1)各层协议之间是相互独立的,上层协议不需要知道下层协议的协议,通过调用下层协议的接口即可使用。

(2)当任意一层的协议发生变化,但只要层间的接口关系不变,其他层也不会受到影响。

在计算机网络中,有两种常见的协议体系结构:


①OSI的七层协议

但是OSI的七层协议是理论上的标准,复杂也不实用。所以在实际上用的是TCP/IP五层协议。

(2)TCP/IP的五层协议

应用层:负责进程之间的交互。(应用层的协议格式,往往是由设计程序的程序员定义。)

运输层:负责两个主机之间的通信。也称为:端到端,进程通信。(UDP\TCP协议)

网络层:负责地址管理以及路径选择。任意主机之间尽力而为服务。(IP协议)

数据链路层:负责相邻节点之间的传输。(以太网协议)

物理层:传输比特数。负责光/电的传输方式。硬件设备。


5.常见的物理设备:

路由器:实现了网络层以下的三层。

交换机:实现了数据链路层以下的两层。

集线器:实现了物理层。

5.客户端、服务器

主动发起通信的一方叫做客户端,或者获取服务的一方进程叫做客户端。

被动接受的一方叫做服务器,或者提供服务的一方进程叫做服务端。

6.请求、响应

请求:获取服务资源。客户端发给服务器的数据。

响应:返回服务资源。服务器返回给客户端的数据。

二、两台主机之间的通信

假设A在微信上给B发送了一条消息x。

A->B发送信息过程:

(1)在应用层,微信通过输入框获取到用户发送的信息。通过应用层的协议格式将信息构造应用层的数据包。

例如:规定这种格式为应用层的数据包。构造完毕后,通过调用运输层的api接口,以参数的形式将数据包交给传输层。

(2)传输层

传输层将上述数据作为一个整体,构成一个传输层的数据包。

假设使用UDP的协议格式,则传输层的数据包格式:

在UDP报头中,含有源端口,目标端口等数据。

添加UDP报头这样的过程,叫做封装。封装完毕后,调用下一层的Api。

(3)网络层

网络层收到数据包后,封装IP协议的报头。IP报头,含有源IP地址、目标IP地址等信息。调用下层协议的api。

(4)数据链路层

数据链路层收到IP数据包后,在此基础上,添加帧头和帧尾,构成以太网数据帧。交给物理层。

(5)物理层

物理层收到以太网帧(0.1.0.1)的数据后,将其转换成光信号/电信号/电磁波,然后进行发送。


不考虑中间过程,B收到A传送的消息过程:

(1)物理层

B的物理层收到了光信号、电信号、电磁波,就会将数据转换成数字信号(0.1.0.1)得到一个以太网帧后,进一将数据交给数据链路层

(2)数据链路层

按照以太网数据帧的格式,将数据解析,取出其中的载荷,交给上层协议,即:网络层。

(3)网络层

按照IP协议的格式,将数据解析,取出其中的载荷,交给上层协议

(4)传输层

按照UDP协议的格式,将数据解析,取出其中的载荷,交给上层协议

(5)应用层

按照应用程序内部的应用层协议格式进行解析,拿到数据,显示。

上述过程,也称为分用,封装的逆过程。通过协议头,进行数据分用。

     对于更详细的内容,可在后序文章中看到。

为了实现两台主机之间网络通信,需要根据它们是否处于同一网段来选择不同的通信方法。以下是两种常见情况的详细说明: ### 同网段通信 在同网段的情况下,两台主机可以直接通过交换机进行通信,无需经过路由器。以下是通信过程的详细描述: 1. **应用层**:主机通过TCP/IP协议中的TCP应用端口进行通信主机打开一个会话应用窗口,并通过逻辑软件的链接和相互配合(例如检查ARP缓存)将数据传到下一层。 2. **传输层**:数据在此层被分段,并添加TCP报头(包括源端口和目的端口)。分段的目的是为了节省传输时间、减少错误率以及解决传输单元的限制问题。 3. **网络层**:在此层,数据被添加IP报头(包括源IP和目的IP),封装成数据包,然后传输到下一层。 4. **数据链路层**:在数据包前加入数据帧头(包括源物理地址和目的物理地址),并在数据包后加入校验位,封装成数据帧,然后传输到下一层。 5. **物理层**:数据帧在此层被转换成可以在物理链路上传输的电子信号,并通过交换机传输到目的主机。 6. **目的主机**:目的主机通过比对目的物理地址确认接收数据,拆去数据帧头,发往网络层。网络层比对目的IP,如果相同则拆包发往传输层,传输层再比对目的端口,如果相同则拆去数据段,交给应用程序进行数据组装,完成通信过程。 ### 不同网段通信两台主机处于不同网段时,通信需要通过路由器进行转发。以下是通信过程的详细描述: 1. **应用层**:主机通过TCP/IP协议中的TCP应用端口进行通信,打开一个会话应用窗口,并通过逻辑软件的链接和相互配合(例如检查ARP缓存)将数据传到下一层。 2. **传输层**:数据在此层被分段,并添加TCP报头(包括源端口和目的端口)。 3. **网络层**:在此层,数据被添加IP报头(包括源IP和目的IP),封装成数据包,然后传输到下一层。 4. **数据链路层**:在数据包前加入数据帧头(包括源物理地址和目的物理地址),并在数据包后加入校验位,封装成数据帧,然后传输到下一层。 5. **物理层**:数据帧在此层被转换成可以在物理链路上传输的电子信号,并通过交换机传输到路由器。 6. **路由器**:路由器接收到数据包后,检查目的IP地址,并根据路由表决定转发路径。路由器会将数据包转发到下一跳路由器或直接转发到目标网段的交换机。 7. **目的主机**:目的主机通过比对目的物理地址确认接收数据,拆去数据帧头,发往网络层。网络层比对目的IP,如果相同则拆包发往传输层,传输层再比对目的端口,如果相同则拆去数据段,交给应用程序进行数据组装,完成通信过程。 ### 配置示例 以下是一个简单的路由器配置示例,展示如何配置路由器的接口IP地址: ```bash <Huawei>sys Enter system view, return user view with Ctrl+Z. [Huawei]sys R1 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 192.168.10.2 255.255.255.0 [R1-GigabitEthernet0/0/0]quit [R1]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 10.0.12.1 255.255.255.0 [R1-GigabitEthernet0/0/1]quit ``` ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值