什么是IP地址?
在计算机出厂的时候,有一个唯一标识的物理地址。但是因为厂商不同等各种原因,用来标识一台计算机在网络中是比较麻烦的,于是出现了IP地址,IP地址是互联网协议地址的意思,是“Internet Protocol Address”的缩写,也被称为网际协议地址;IP地址是ip协议提供的一种统一的地址格式,可以为互联网上的每一个网络和每一台主机分配一个逻辑地址,用来标识你的主机以此来进行网络通信。IP地址的出现能屏蔽物理地址的差异。
什么是端口号?
在我们计算机上有许多的应用程序,如果电脑上只有唯一的应用程序进行交流是不需要端口号来标识的,有了IP地址就能进行通信。但是这是不可能的。比如说我电脑上同时运行着网游,又运行着微信。此时对方电脑的微信与你进行交流。如果仅凭IP地址只能找到你电脑在哪。无法知道这个信息是送给游戏的还是送到微信的。因此端口号的出现,是用来更明确的标识与谁进行通信。有了IP地址与端口号的结合,就能唯一标识一个应用程序进行网络通信。
什么是协议?
协议就是双方约定好的规矩。什么是网络,网络就是用来交流通信的。人与人之间的交流也是通信。计算机与计算机之间的交流也是通信。只不过通信的方式不一样而已。人与人之间通信的协议最基本的协议就是语言。两个人都说中文相互就能进行信息交流。但是一个说西班牙语一个说阿拉伯语那他们两谁都听不懂谁说话。计算机也是如此。为了实现通信的统一标准化。我们需要制定一些规则来进行计算机之间的通信也就是我们所说的协议。计算机中有非常多的协议,分别在不同的层之中。
OSI七层模型
OSI七层模型是最早提出的概念。但是在现实中并没有用到七层模型,而是四层模型,参考上图,将应用层,表示层,会话层统一归结于应用层。其余的基本不变。有些会把物理层与数据链路层归结于一层。应用层主要是应用程序一类的网络协议。传输层和网络层属于操作系统内核提供的协议,也就是我们熟知的TCP/UDP/IP协议。再到数据链路层就是属于物理层,也就是物理硬件。我们一般不关心。
一个网络通信的例子:
QQ实现A-?B之间的信息传递过程是如何实现的
1.假设我现在有一个这样的网络拓扑图。小明向小美通过QQ发送一句“hello”,首先QQ这个应用程序会把hello这个字符串打包成一个应用层数据报。 这个应用层协议肯定也是有自己的格式的比如说这个协议的格式为:
发送方的QQ号码;发送时间
接收方的QQ号码;接收时间
数据内容。。。
那么我们就能构造这个数据报:
这是我们假设的,现实中这个应用程序的格式是不确定的。构造好了数据包之后,程序要调用操作系统提供的API接口,把这个应用层的数据报传递给传输层。进入传输层相当于进入了操作系统内核。
2.进入传输层,就会把上述应用层打包好的数据报在加一点信息封装成传输层的数据报。传输层的协议就是我们熟知的TCP/UDP协议了。比如此时我们用UDP协议传输。我们就会构造成UDP的报文。
在报头里会涉及到源端口,目的端口。
3.接下来传输层构造好的数据报会传输给网络层。网络层中有个著名的协议是IP协议。此时又会在原有的基础上添加一些信息再次封装起来:
在这次IP报头里会涉及到源IP地址,目的IP地址。
4.打包好后这个数据报又会传输给数据链路层,数据链路层最知名的协议就是”以太网“。上面的数据将会打包成一个”以太网数据帧“他是一头一尾的封装上去的:
5.接着将上述打包好的数据报传输到物理层。物理层会把数据报的二进制转换成电信号/光信号。通过传输介质发送到对方电脑的物理层。
6.对方电脑收到这个二进制数据报的的时候,又会进行封装的逆操作,就是通过层层脱去对应层添加的报文,解析就能得到hello。
这就是网络传输的大体思路。也就是我们常听的计算机网络模型中下层为上层提供服务。