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

2016-04-28  本文已影响51人  Lance_Van

嘛。。。没什么可说的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服务器接收到请求后,返回所请求的对象作为相应。
客户端——服务端体系结构有两个特点:

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

1.1.2 进程通信

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

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

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

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

1.1.4 因特网提供的的运输服务

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

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

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

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

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

1.1.5 应用层协议

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

上一篇 下一篇

猜你喜欢

热点阅读