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

一、基本概念

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)应用层

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

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

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

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值