首先,我们今天使用的计算机都是要联网使用的。很少有那种单机走天下的情况了。
那么我们的计算机是如何通过网络实现通信的。我们先了解一些关于网络的基础知识。 然后再开始学习一些关于网络编程的内容,第一个要解释的名词叫协议。 我们只有明白协议是什么, 后面再看各种各样的通信规则就容易的多了。
官方: 网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流
民间:两台计算机之间约定好。我发送的数据格式是什么。你接收到数据之后。使用相同的格式来拿到数据
例子: 你和一个韩国人交流。你说中文,他说韩文。你俩是不能明白对方说的是什么的。怎么办? 你俩约定好,都说英语。实现交流。这个就叫协议。
网络协议:互联网之间互相传递消息的时候使用统一的一系列约定
在今天的互联网数据传输中一般使用的是OSI七层协议。也有简称为五层,四层协议。 只是对不同网络层的定义不同。内部原理和作用是一样的。
每层运行常见物理设备
OSI七层协议数据传输的封包与解包过程
每一层分别是做什么的?这里涉及到的网络的知识非常的复杂。只做简单介绍,如果你想深入研究,可以参考大学课本(计算机网络)。买最薄的那本就够了。
我们将应用层,表示层,会话层并作应用层,从五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个互联网通信的原理。
首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解
每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件。
这一层没啥说的。作用就是把0101等电信号发送出去。
这一层负责装配自己和对方主机的MAC地址。
MAC地址:每个网络设备的唯一编码。全球唯一。由不同厂商直接烧录在网卡上。
作用:在庞大的网络系统中,你要发送的数据到底是要给谁的。由谁发送出来的。这就相当于你写信的时候的信封。上面得写清楚收货人地址。
在有了MAC地址其实我们的电脑就可以开始通信了。但是。此时的通信方式是广播。 相当于通通信基本靠吼。你发送一个数据出去。会自动的发给当前网络下的所有计算机。然后每个计算机的网卡会看一眼这个数据是不是发给自己的。像这样的通信方式,如果计算机的数据量少。是没有问题的。但是。如果全球所有计算机都按照这样的方式来传输消息。那不仅仅是效率的问题了。绝对是灾难性的。那怎么办。大家就想到了一个新的方案,这个方案叫IP协议。使用IP协议就把不同区域的计算机划分成一个一个的子网。子网内的通信使用广播来传递消息。广播外通过路由进行传递消息。你可以理解为不同快递公司的分拨中心。我给你邮寄一个快递。先看一下是不是自己区域的。是自己区域直接挨家挨户找就OK了。但是如果你不是我这个区域的。就通过分拨中心(路由器网关)找到你所在的区域的分拨中心(路由器网关),再通过你的分拨中心下发给你。这里IP协议的作用就体现出来了。专门用来划分子网的。
那么在传输数据的时候就必须要把对方的ip地址带着。有了这个ip再加上子网掩码就可以判断出该数据到底是属于哪个子网下的数据。
IP地址:由4位点分十进制表示。每位最大255。故IP地址的范围:0.0.0.0~255.255.255.255。
问:为什么是255,答:2**8 每一位用8位2进制表示,合起来32位就可以表示一个计算机的ip地址
子网掩码:用来划分子网的一个4位点分十进制.
网关:路由器在子网内的ip。不同局域网进行数据传输的接口(分拨中心)
计算子网的过程(了解):
ip1: 192.168.123.16
ip2: 192.168.123.45
子网掩码: 255.255.255.0
全部转化成二进制
ip1: 11000000 10101000 01111011 00010000
ip2: 11000000 10101000 01111011 00101101
子网: 11111111 11111111 11111111 00000000
让ip1和ip2分别和子网进行"与"运算
ip1 & 子网: 11000000 10101000 01111011 00000000
ip2 & 子网: 11000000 10101000 01111011 00000000
相等. OK 这两个IP就是同一个子网
总结,网络层提出了子网(局域网)的概念.。通过ip地址和子网掩码来划分子网
我们现在解决了外界的数据传输问题。使用MAC地址和IP地址可以唯一的定位到一台计算机了。那么还有一个问题没有解决。我们知道一台计算机内是很有可能运行着多个网络应用程序的。比如,你开着LOL,挂着DNF,聊着QQ,还看着快播。那么此时你的计算机网卡接收到了来自远方的一条数据。 那么这一条数据到底给那个应用呢?说白了,快递送到你公司了。地址没毛病了。可是你公司那么多人。这个快递到底给谁?不能乱给啊。怎么办呢?互联网大佬们想到了一个新词叫端口。
传输层规定:给每一个应用程序分配一个唯一的端口号。当有数据发送过来之后。通过端口号来决定该数据发送的具体应用程序。
但是根据不同应用程序对网络的需求的不同(有的要求快,有的要求可靠) 又把传输层划分成两个协议。一个叫TCP,一个叫UDP。所以,我们常说的TCP/IP协议中最重要,也是我们最关注的其实就是IP和端口了。因为有了这两个,我们其实就可以定位到某一台计算机上的某个网络应用程序了。也就可以给他发送消息了。
计算机的端口数量:
TCP :65536个
UDP:65536个
但0一般不用,故而我们通常都说65535
这一层就比较好解释了。TCP+IP可以定位到计算机上的某个应用了。但是不同应用传输的数据格式可能是不一样的。就好比快递。有的是大包裹,有的是小文件。一个要用大麻袋装,一个要用小快递袋装。
到了应用层,我们一般是根据不同类型的应用程序进行的再一次封装。比如:HTTP协议,SMTP协议,FTP协议等等。
原文:https://www.cnblogs.com/pure3417/p/14698008.html