"范老湿从不会计算机网络"

嘛。。。没什么可说的Orz既然上次开了SQL的坑,这次就说说计算机网络好了(之前的坑快去填啊喂!)Orz那么名字也延续上次的嗯。“范老湿从不会计算机网络”,参考书籍是James F. Kurose和Keith W. Ross的《计算机网络:自顶向下方法》。

说到网络就不得不说TCP/IP协议,即传输控制协议(Transmission Control Protocol)和网际协议(Internet Protocol)。我们也知道TCP/IP协议分为五层,那么就一层一层说吧。

一、应用层

应用层,顾名思义,和网络应用的原理与实现有关。我们在这一章中主要会了解Web、电子邮件、DNS和对等邮件分发等网络应用。同时,我们也会接触一些TCP/UDP的网络应用开发与运行。Socket这个词你可能并不陌生,它就可以用来实现一些客户端——服务端应用程序。

1.1原理

1.1.1 网络应用程序体系结构

主要分两种:客户端——服务端体系结构(client-server architecture)和P2P体系结构(Peer to Peer architecture)。

客户端——服务端体系结构中,用于产生请求(request)的被称为客户端(client),用于处理请求,产生响应(response)的被称为服务端。例如用户在浏览器中点击了一个链接,即向服务器请求了一个页面;web服务器接收到请求后,返回所请求的对象作为相应。
客户端——服务端体系结构有两个特点:

  • 客户端之间不直接通信;
  • 服务端具有固定、周知的地址(被称为IP地址)。
    按照常识,如果客户端请求过多,服务端必然不堪重负。因此,一些压力比较大的网络服务常常在全球各地建立数据中心,既分散了压力,又加快了不同地区的访问速度。

而P2P体系结构对于数据中心的专用服务器依赖很小,或者说没有依赖;相反,应用程序在间断连接的主机对之间直接通信。这些主机对之前被称为对等方。这些对等方也不为服务提供商所有,而是台式机、笔记本、手机等个人设备。P2P体系结构最显著的优点就是它的自扩展性(self-scalability),即在一个P2P文件共享服务中,每个对等方都由于请求产生工作量, 但是每个对等方也向其他对等方分发文件,从而提高了整个系统的服务能力。
而P2P体系结构也面临三大挑战:

  • ISP友好:由于ISP的本地优化,下载速度一般比上传速度要小得多,从而影响了系统整体性能;
  • 安全性:由于P2P的高度分布性,P2P应用会给安全带来挑战;
  • 激励:如何说服用户为P2P应用提供存储、带宽、计算等资源。
1.1.2 进程通信

我们都知道,在操作系统中,进行通信的实际上是进程(process)。两个不同端系统上的进程通过报文(message)相互通信。
对于每一对通信进程,我们通常将这两个进程之一标示为客户端(client),而另一个标示为服务端(server)。对于P2P文件共享系统中,一个进程可以既上传文件,又下载文件;但是对于某一个通信场景,仍可以将一个进程表示为客户端,一个进程标示为服务端,定义如下:

  • 在给定的一对进程之间的通信会话场景中,发起通信的进程被标识为客户端,在会话开始时等待联系的进程是服务端

进程之间通过socket作为API发送或者接收报文,通过IP地址和端口号来寻址。IP地址来确定主机,而端口号用来标识不同的服务。如web服务器用80端口,邮件服务器进程用25端口,ssh服务用22端口等等。

1.1.3 可供应用程序使用的运输服务

对于服务来说,必然面对各种各样的需求。衡量一个需求通常有以下几个维度:

  • 可靠数据传输
    例如电子邮件、文件传输、远程主机访问等应用,数据丢失可能导致灾难性的后果。确保数据正确、完全的传输的数据交付服务被称为可靠数据传输
    相对的,也存在容忍丢失的应用,如民用交谈式音频/视频等。
  • 吞吐量
    在一些网络应用,如流媒体播放、大规模分布式计算中,如果处理不好的话,网络带宽可能成为影响整体系统性能的短板。具有数据吞吐量要求的应用被称为带宽敏感的应用。而弹性应用能根据情况或多或少地利用可供使用的吞吐量,如电子邮件、文件传输、web传送等。
  • 定时
    运输层协议也能提供定时保证。在一些线上交互场景,如网络游戏、网络电话会议等场合,若不能保证报文在一定时间内(如100ms)到达,则可能出现卡顿的情况。
  • 安全性
    主要指防止在传送过程中被第三方抓包儿导致的信息泄漏。可采取加密等措施。
1.1.4 因特网提供的的运输服务

主要是TCP和UDP两种。
TCP服务模型包括面向连接的服务和可靠数据传输服务。

  • 面向连接的服务:在应用层报文开始流动之前,TCP让客户端和服务端互相交换运输曾控制信息,即“握手”。在这个阶段后,一个TCP连接就在两个进程的socket之前建立了。TCP连接是全双工的,连接双方的进程可以在此连接上同时进行报文的收发。应用程序结束报文连接后,必须拆除该连接;
  • 可靠的数据传输服务:通信进程能够通过TCP,无差错,按适当顺序交付所有发送的数据。

TCP协议还具有拥塞控制机制。

为了解决传送过程中的安全问题,SSL(Secure Socket Layer)技术将TCP“升级”,有自己的API,但是SSL不是同TCP、UDP同一层次的传输协议,而是对TCP的“加强”。

UDP是一种不提供不必要服务的轻量级运输协议。UDP是无连接的,没没有握手过程。UDP协议提供一种不可靠数据传送服务,即不保证报文到达接收进程,也不保证到达顺序。
UDP协议也不具有拥塞控制机制。

然而,目前任何一种协议都无法提供定时或带宽保证。

1.1.5 应用层协议

应用层协议主要解决报文的结构的定义,例如:

  • 交换的报文类型,例如请求报文和响应报文;
  • 各种报文类型的语法,即报文中字段及其描述方式;
  • 字段的定义;
  • 一个进程何时以及如何发送报文,对报文进行响应的规则。

你可能感兴趣的:("范老湿从不会计算机网络")