#计算机网络 #XJTLU
中科大郑烇、杨坚《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
计算机网络系列笔记根据B站课程 @中科大-郑烇老师 的课程总结而来,供自学以及分享使用。
<课程链接>
第二章 应用层
应用层协议原理
网络应用的体系结构
可能的应用架构:
- 客户-服务器模式(C/S,client/server)
- 对等模式(P2P,peer-to-peer)
- 混合模式
- 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连接:
UDP上的套接字(UDP Socket)
- UDP二元组:本地IP、本地Port
UDP Socket建立一个UDP二元组,代表本地IP和本地端口,是一个本地意义上的标识,代表的是一个会话关系中的一个端节点。因为UDP是无连接服务,不指定目的IP和端口。
UDP套接字指定了应用所在的一个端节点(end point),在发送数据报时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己所采用的IP和Port了。
但是在发送报文时,必须要制定对方的IP和UDP Port(另一个端节点)。
操作系统维护一个UDP Socket表,用于管理所有的UDP连接:
应用层协议
- 协议是对等层实体应遵循的规则集合。
- 应用层协议定义了:运行在不同端系统上的应用进程如何相互交换报文。报文包括请求和应答报文。
- 公开协议:由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相应状态码
- 200: OK
- 301: Moved Permanently
- 400: Bad Request
- 404: Not Found
- 505: HTTP Version Not Supported
维护用户-服务器状态:Cookie
- Cookie:服务器发送给客户端的小文件,存储在客户端的文件中,用于维护用户-服务器状态;
- 大部分主要的门户网站使用Cookies;
- 4个组成部分:
- 在HTTP相应报文中有一个Cookie的首部行;
- 在HTTP请求报文中有一个Cookie的首部行;
- 在用户端系统中保留一个Cookie文件,由用户的浏览器管理;
- 在Web站点有一个后端数据库。
Cookies与隐私:
- Cookies允许站点知道许多关于用户的信息;
- 可能会将他所知道的资料信息卖给第三方;
- 使用重定向和Cookie的搜索引擎,还能知道用户更多的信息;
- 如通过某个用户在大量站点上的行为,了解其个人浏览方式的大致模式。
- 广告公司从站点获得信息等。
Web缓存(代理服务器)
- 目标:不访问原始服务器,就满足用户的请求;
- 用户设置浏览器:通过缓存访问Web,浏览器将所有的HTTP请求发给缓存:
- 在缓存中的对象:缓存直接返回对象;
- 如对象不在缓存,缓存请求原始服务器,然后再将对象返回给客户端。
- Web缓存既是客户端,又是服务器;
- 通常缓存是由ISP安装(大学、公司、居民区ISP等)。
- 为什么要使用Web缓存?
- 降低客户端的请求响应时间;
- 可以大大减少一个机构内部网络与Internet接入链路上的流量;
- 互联网大量采用了缓存:可以使较弱的ICP也能够有效提供内容。
条件GET方法(Conditional GET)
- 目标:如果缓存其中的缓存对象拷贝是最新的,就不用再从服务器上重新获取;反之获取,以获得最新版本的对象。
持续更新中…
如有错误,请及时指出~评论发邮件均可,欧内盖!