引言:感谢!
计算机网络可以说是一门计算机的必修课吧,私以为,计算机网络和计算机组成原理是一名计算机专业学生最应该先学习的知识~ 于是我决定展开对于这门学科一些知识总结与感悟。 在这里要感谢一名老师,在刚踏上大学这段旅途的时候,余老师像一盏明灯一样,使得我面临计算机这个钢铁巨兽面前不会感到手足无措,带我踏进了计算机这个门槛、揭开了计算机的奥妙。
实例引入:
计算机之所以能够通信,是因为其遵守了相约定好的协议(protocol)。就像人与人之间对话所使用的语言一样,语言不同,自然也就不能实现“通信”。于是,协议这种约定俗成的东西就诞生了。
协议控制因特网中信息的接收和发送。将复杂的计算机通信过程分为多层,提供了结构化的形式。每层之间互相独立,只需实现其所在层的功能即可,层与层之间提供接口与服务。
说到协议,就不得不提大名鼎鼎的TCP/IP了。
TCP/IP 模型:
- 下面的 OSI 七层模型是最早的协议,但由于某些原因,他更多的是一种标准的形式存在,没有实际推广(有兴趣的同学可以自行百度~)
- TCP/IP 四层模型的网络接口层又被人拆分为 数据链路层和 物理层。(又叫TCP 五层模型)
下面我们针对TCP/IP的各层进行简单介绍
物理层
所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传送物理信号,比如电信号、电压。对于数字应用来说,我们只需要两种物理信号来分别表示0和1,比如用高电压表示1,低电压表示0,就构成了简单的物理层协议。针对某种媒介,电脑可以有相应的接口,用来接收物理信号,并解读成为0/1序列。
数据链路层
息以帧(frame)为单位传输。信息是一段有序的0/1序列,而帧,是这个序列中符合特定格式的一小段。连接层协议的功能就是识别0/1序列中所包含的帧。并且负责 物理层和网络层之间的通信。
帧中,有源地址和目的地址,还有能够探测错误的校验序列(FCS)。当然,帧中最重要的最重要是所要传输的数据
通过连接层协议,我们可以建立局域的以太网或者WiFi局域网,并让同一局域网中的两台计算机通信。
网络层
数据链路层使得同一个局域网的人可以互相通信,那么不处于同一个局域网如何通信呢?我们需要一个“中间人”。这个“中间人”必须有以下功能:
能从物理层上在两个网络的接收和发送0/1序列,
能同时理解两种网络的帧格式。
通过网络层的交换和选路,最终使得两个远端设备能够通信,这就是网络层的用处了。
路由网关:
路由器(router)就是为此而产生的“中间人”,也称为“网关”。一个路由器有多个网卡(NIC,Network Interface Controller)。每个网卡可以接入到一个网络,并理解相应的连接层协议。在帧经过路由到达另一个网络的时候,路由会读取帧的信息,并改写以发送到另一个网络。
两个不同局域网的计算机是这么通信的:
主机发出数据 -> 发现与对端主机处在不同个局域网 -> 数据交给网关进行转发 -> 送达目的端计算机
而实际情况比这更加复杂,上述内容省略了ARP、ICMP、路由等步骤
在数据链路层,一个帧中只能记录目的地址和源地址两个地址。而完成上面的过程需要经过四个地址(计算机1,网关地址,以太网接口,计算机2),因此,这也是 IP协议的主要功能——寻址。
传输层
上面的三层协议让不同的计算机之间可以通信。但计算机中可能运行了许多个进程,每个进程都可能有自己的通信需求。我们使用网络接口层、网络层实现了主机与主机之间的通信,可是, 软件与软件之间的通信该如何解决呢? 没错,就是传输层要做的事情了。
端口号:
计算机有多个进程,那么我们如何辨别是某个进程发出的信息请求呢? 比如我们打开firefox浏览网页,与此同时,又用QQ来接收邮件。我们需要有一个标志来识别,也就是端口号啦。
我们知道IP层的ip地址可以唯一标识主机,而端口号可以唯一标示主机的一个进程。
TCP 和 UDP
Internet 在传输层有两种主要的协议:一种是面向连接的协议 TCP ,一种是无连接的协议 UDP。利用端口号,一台主机上多个进程可以同时使用 TCP/UDP 提供的传输服务,并且这种通信是端到端的,它的数据由 IP 传递,但与 IP 数据报的传递路径无关。
应用层
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。
运行在一个端系统的应用程序,怎样才能指令因特网向运行在另一个端系统上的软件发送数据呢?
与因特网相连的端系统提供了一个应用程序接口(API),API往往规定了运行在一个端系统上的软件向另一个端系统上特定目的地软件交互数据的方式。可以说,因特网API是一套数据发送软件必须遵循的规则集合。
应用层常用服务:
常用服务 | 协议 | 端口号 |
---|---|---|
HTTP | TCP | 80 |
FTP | TCP | 20、21 |
Telnet | TCP | 23 |
以上就是这篇文章的全部内容,我们只是介绍了个大概的框架,具体内容会在以后进行详细介绍。
还有一点要说的是,计算机网络是基础,大多数内容都是理论。这些知识点都是需要牢牢记住的~ 因为听说面试大多数都会问到 TCP 如何建立连接、HTTP 的内部实现 等等一些理论性知识点。