banner
NEWS LETTER

计网Chapter2-应用层

Scroll down

#计算机网络 #XJTLU

中科大郑烇、杨坚《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程

计算机网络系列笔记根据B站课程 @中科大-郑烇老师 的课程总结而来,供自学以及分享使用。
<课程链接>

第二章 应用层

应用层协议原理

网络应用的体系结构

可能的应用架构:

  • 客户-服务器模式(C/S,client/server)
  • 对等模式(P2P,peer-to-peer)
  • 混合模式

CS体系结构

  • CS模式的缺点:可扩展性较差,服务器可能成为性能瓶颈

对等体架构

  • P2P模式的缺点:难以管理

混合体模式

进程通信

  • 进程:运行在不同主机上的应用程序

    • 客户端进程:发起通信的进程,是主动的进程
    • 服务器进程:等待连接的进程,是被动的进程
    • 即便是P2P模式,也有客户端和服务器之分。
  • 在同一个主机内,使用进程间通信机制通信(操作系统)

  • 不同主机,通过交换报文(Message)进行通信。

    • 使用OS提供的通信服务
    • 按照应用协议交换报文(借助传输层提供的服务)

分布式进程通信

对进程进行编址(Adressing)

进程为了接收报文,必须有一个标识,即:SAP(Socket Address Port)。SAP由IP地址和端口号组成。使用唯一的32位IP地址表示一个主机,使用16位端口号表示一个进程。本质上,一对主机进程之间的通信由两个端节点构成,一个端节点就用IP+Port来标识

一些知名端口号:
HTTP TCP:80; Mail TCP:25

TCP上的套接字(TCP Socket)

  • TCP四元组:本地IP、本地Port、目的IP、目的Port

实际上,建立一个Socket连接后,操作系统就会返回一个“整数”,(Socket描述符、句柄),用于标识这个连接。之后,就可以通过这个描述符来进行通信。
Socket本质上是一个连接的本地标识,一个会话关系,是传输层自己维护的一个映射关系(源IP源Port-目的IP目的Port)。
操作Socket的“整数”的“值”,就是操作这个会话关系,简单易于管理。

操作系统往往要维护一个这样的TCP Socket表,用于管理所有的TCP连接:
TCP Socket表

UDP上的套接字(UDP Socket)

  • UDP二元组:本地IP、本地Port

UDP Socket建立一个UDP二元组,代表本地IP和本地端口,是一个本地意义上的标识,代表的是一个会话关系中的一个端节点。因为UDP是无连接服务,不指定目的IP和端口。
UDP套接字指定了应用所在的一个端节点(end point),在发送数据报时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己所采用的IP和Port了。
但是在发送报文时,必须要制定对方的IP和UDP Port(另一个端节点)。

操作系统维护一个UDP Socket表,用于管理所有的UDP连接:
UDP Socket表

应用层协议

  • 协议是对等层实体应遵循的规则集合。
  • 应用层协议定义了:运行在不同端系统上的应用进程如何相互交换报文。报文包括请求和应答报文。
  • 公开协议:由RFC(Request for Comments)定义规范并发布,允许互操作,如HTTP、SMTP、FTP等。
  • 私有协议:一些不公开的内部协议,如Skype等。

Web与HTTP

URL格式

  • URL(Uniform Resource Locator):统一资源定位符
    • URL格式:<scheme>://<host>:<port>/<path>
    • scheme:协议名,如http、https、ftp等
    • host:主机名或IP地址
    • port:端口号,可选
    • path:资源路径

URL格式

HTTP

  • HTTP(HyperText Transfer Protocol):超文本传输协议

  • HTTP使用TCP作为传输层协议:

    • 客户端发起一个与服务器的TCP连接(建立套接字),使用端口80;
    • 服务器接受客户端的TCP连接;
    • 在浏览器(HTTP客户端)与Web服务器(HTTP服务器server)交换HTTP报文(应用层协议报文);
    • TCP连接关闭。
  • HTTP是无状态的,服务器不维护客户端的状态和任何信息。这样的服务器也称为无状态服务器。

HTTP连接

  • 非持久HTTP:

    • 最多只有一个对象在TCP连接上发送;
    • 下载多个对象需要多个TCP连接;
    • HTTP/1.0使用非持久连接。
  • 持久HTTP:

    • 多个对象可以在一个TCP连接上传输;
    • HTTP/1.1默认使用持久连接。

HTTP请求报文

  • 两种类型:请求和响应
  • HTTP请求报文:

HTTP请求报文

HTTP相应状态码

  • 200: OK
  • 301: Moved Permanently
  • 400: Bad Request
  • 404: Not Found
  • 505: HTTP Version Not Supported

HTTP响应状态码

维护用户-服务器状态:Cookie

  • Cookie:服务器发送给客户端的小文件,存储在客户端的文件中,用于维护用户-服务器状态;
  • 大部分主要的门户网站使用Cookies;
  • 4个组成部分:
    • 在HTTP相应报文中有一个Cookie的首部行;
    • 在HTTP请求报文中有一个Cookie的首部行;
    • 在用户端系统中保留一个Cookie文件,由用户的浏览器管理;
    • 在Web站点有一个后端数据库。

Cookie

Cookies与隐私:

  • Cookies允许站点知道许多关于用户的信息;
  • 可能会将他所知道的资料信息卖给第三方;
  • 使用重定向和Cookie的搜索引擎,还能知道用户更多的信息;
    • 如通过某个用户在大量站点上的行为,了解其个人浏览方式的大致模式。
  • 广告公司从站点获得信息等。

Web缓存(代理服务器)

  • 目标:不访问原始服务器,就满足用户的请求;
  • 用户设置浏览器:通过缓存访问Web,浏览器将所有的HTTP请求发给缓存:
    • 在缓存中的对象:缓存直接返回对象;
    • 如对象不在缓存,缓存请求原始服务器,然后再将对象返回给客户端。

Web缓存

  • Web缓存既是客户端,又是服务器;
  • 通常缓存是由ISP安装(大学、公司、居民区ISP等)。
  • 为什么要使用Web缓存?
    • 降低客户端的请求响应时间;
    • 可以大大减少一个机构内部网络与Internet接入链路上的流量;
    • 互联网大量采用了缓存:可以使较弱的ICP也能够有效提供内容。

条件GET方法(Conditional GET)

  • 目标:如果缓存其中的缓存对象拷贝是最新的,就不用再从服务器上重新获取;反之获取,以获得最新版本的对象。

条件GET方法


持续更新中…
如有错误,请及时指出~评论发邮件均可,欧内盖!

Other Articles
Article table of contents TOP
  1. 1. 应用层协议原理
    1. 1.1. 网络应用的体系结构
    2. 1.2. 进程通信
    3. 1.3. 分布式进程通信
      1. 1.3.1. 对进程进行编址(Adressing)
      2. 1.3.2. TCP上的套接字(TCP Socket)
      3. 1.3.3. UDP上的套接字(UDP Socket)
    4. 1.4. 应用层协议
  2. 2. Web与HTTP
    1. 2.1. URL格式
    2. 2.2. HTTP
      1. 2.2.1. HTTP连接
      2. 2.2.2. HTTP请求报文
      3. 2.2.3. HTTP相应状态码
      4. 2.2.4. 维护用户-服务器状态:Cookie
      5. 2.2.5. Web缓存(代理服务器)
      6. 2.2.6. 条件GET方法(Conditional GET)
Please enter keywords to search