前言:本系列是基于《计算机网络:自顶向下方法》的学习笔记,整理了部分网络的资料,主要以个人学习记忆为主,欢迎大家共同探讨!
应用层
1 应用层协议原理
1.1 网络应用程序体系结构
在现代网络应用程序中使用的两种主流体系结构:
1、客户端-服务器体系结构
在客户-服务器体系结构( client- server architecture)中,有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求。一个典型的例子是Web应用程序,其中Web服务器服务于来自浏览器的请求。当Web服务器接收到来自某客户对某对象的请求时,它向该客户发送所请求的对象作为响应。
应用:WEB,FTP,电子邮件,Telnet
tips:客户(如web中的浏览器)相互之间不直接通信;服务器具有固定的、周知的ip地址。
2、P2P体系结构(对等结构)
在一个P2P体系结构(P2P architecture)中,对位于数据中心的专用服务器有最小的(或者没有)依赖。相反,应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。
应用:迅雷,因特网电话,视频会议
tips:客户机间的直接通信使得P2P有了强大的自扩展性(self-calability),尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力
1.2 进程通信
网络应用程序由成对的进程组成,在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)。通常将两个进程之一标识为客户(发起通信的进程),另一个标识为服务器(等待联系的进程)。
套接字:应用程序编程接口
进程之间的报文交换必须通过下面的网络(即传输层)。进程通过一个称为套接字(socket)的软件接口向网络发送报文和从网络接收报文,如下图所示:
总结:套接字是应用程序进程和运输层协议之间的接口,通过套接字发送和接受报文。
1.3 运输服务
因特网(TCP/IP网络)为应用程序提供了两个运输层协议,即UDP和TCP:
1、TCP服务
TCP协议则实现了“流”形式的通信,实现的是端口到端口(port)的通信。
①面向连接服务:
在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息,即握手阶段。之后,一条全双工的TCP连接就在两个进程的套接字之间建立了。应用程序结束发送报文时,经历终止协议,即挥手阶段,则拆除该连接。
②可靠的数据传送服务:
通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。
③拥塞控制机制:
当发送方和接收方之间的网络出现拥塞时,TCP 的拥塞控制机制会抑制发送进程。TCP 拥塞控制机制也试图限制每个 TCP 连接,使他们达到公平共享网络带宽的目的。
2、UDP服务
UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。
①面向无连接:
UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,不会对数据报文进行任何拆分和拼接操作。
在发送端,应用层通过套接字将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识;在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层。
②不可靠数据传送服务:
当进程将一个报文发送进 UDP 套接字时,UDP并不保证该报文到达接收进程。不仅如此,到达接收进程的报文也可能是乱序到达的。
此外, UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包。
总结:
运输协议 | UDP | TCP |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输 | 可靠传输 |
连接对象个数 | 支持一对一,一对多,多对一和多对多通信 | 一对一 |
是否连接 | 无连接 | 面向连接 |
传输速度 | 快 | 慢 |
适用场景 | 实时应用(视频会议、直播等) | 可靠传输(文件) |
常见应用:
1.4 应用层协议
应用层协议定义了运行在不同端系统上的应用程式进程如何相互传递报文
定义:
1、交换报文的类型,例如请求报文和响应报文。