【计算机网络】应用层

本文深入探讨了计算机网络应用层的理论与实践,包括Client-Server和P2P模型,重点讲解了HTTP协议的工作原理,如客户端/服务端模型、非永久/永久连接、HTTP请求、Cookies以及HTTP/2的优势。同时,还介绍了电子邮件的SMTP和IMAP协议,阐述了它们在邮件传输中的角色和功能。
摘要由CSDN通过智能技术生成

【计算机网络】应用层



简介

!!!此文为《计算机网络:自顶向下方法》读书笔记,仅供参考!!!
This document is the note of Computer Networking: A Top-Down Approach
注意,本文仅能作为笔记使用,不能直接用来学习


1. 应用层理论

1.1 Client Server和P2P

服务端(Server)特性

  • 持续运行
  • 永久的IP地址
  • 设置位置通常在数据中心,方便集中管理

客户端(Client)特性

  • 无法直接与其他客户端交流,可以与服务端交流
  • 间断性连接(与服务端不同,客户端一般不会持续运行)
  • 动态的IP地址

常见的Client Server运用:HTTP,IMAP,FTP

P2P的特性

  • 端系统可以直接互相交流,发送请求,回报服务
  • 不持续运行,间断性连接
  • 动态的IP地址

常见的P2P运用:P2P文件分享,P2P游戏联机

1.2. 进程

进程(process):在主机/端系统(host/end system)上运行的程序

  • 客户端进程(Client Process):提出交流的进程
  • 服务端进程(Server Process):等待被联系的进程

进程间通讯(Inter-process communication, IPC):进程在同一主机上的通讯
消息(Messages):进程在不同主机上的通讯方式

套接字(Socket):形如进程通往传输层的一扇门,所有消息的接受/发送都会经过套接字

1.3. 初识网络传输协议

应用可能需要的传输服务

  • 数据完整性(Data Integrity):稳定的,可靠的数据传输
  • 时间(Timing):低延迟
  • 吞吐量(Throughput):有最低传输速率阈值
  • 安全(Security):传输加密

网络传输协议服务(Internet Transport Protocols Services)

  • TCP(Transmission Control Protocol)
    1. 稳定的传输
    2. 流控制(Flow Control),即不会出现发送者传输过快,接收者跟不上的情况
    3. 拥塞控制(Congestion Control),即网络拥堵时,控制传输
    4. 方位性连接(Connection-oriented),即连接需要初始化,也就是常说的3握手4挥手
    5. 不提供延迟保证,吞吐量保证,安全保证
  • UDP(User Datagram Protocol)
    1. TCP有的,都没有,TCP没有的,也都没有

(UDP那么弱,为什么还需要它:想象UDP为一张白纸,应用程序拥有极高的自由来自定义服务,而TCP则更向一个模板,提供了一些基础的功能)

TCP安全:由于TCP不提供安全保证,我们可能需要其他协议来完善TCP的功能

  • TLS(Transport Layer Security)
    1. 提供加密的TCP连接
    2. 有稳定的可靠的传输
    3. 有端点认证(end-point authentication)功能

2. Web和HTTP

HTTP(Hypertext Transfer Protocol):一个位于应用层,主要负责处理客户端向服务端拉取对象的协议

2.1. 客户端/服务端模型

客户端:通常指发送,获取,并展示网络对象的浏览器
服务端:通常指返回客户端所需求的物件的服务器

HTTP使用TCP进行连接
1. 客户端请求与服务端进行TCP连接
2. 服务端接受连接请求
3. 客户端与服务端之间进行HTTP消息沟通
4. TCP连接关闭

HTTP是“无状态的”:在HTTP协议下,服务端不会保存用户之前发送请求的记录(即1请求,1回复,结束)

2.2. 非永久/永久HTTP

非永久HTTP(Non-persistent HTTP):每次连接只有一次消息交流
1. 连接开始
2. 1次请求,1次回应
3. 连接关闭
永久HTTP(Persistent HTTP):每次连接可以有多次消息叫交流
1. 连接开始
2. 多次请求,多次回应
3. 连接关闭

2.3. HTTP请求

请求消息格式

  • 请求行(Request Line):标记请求的类型,URL,以及HTTP版本
  • 头行(Header Lines):每一行都设置一个头以及对应的值
  • 内容行(Body Line):一些头行包括不了的额外信息

一些请求类型:

  • GET:用于对服务器发送数据
  • POST:用于上传完成的表格数据
  • PUT:向服务器发送一个新的对象
  • HEAD:与GET一样,但没有内容行

一些状态码(Status Code)

  • 200 OK:请求成功,返回的对象也在这则消息中
  • 301 Moved Permanently:请求的对象被移动了,新的地址也在这则消息中
  • 400 Bad Request:服务器不能理解该请求
  • 404 Not Found:服务器没有找到请求所需要的对象
  • 505 HTTP Version Not Supported:HTTP版本不支持

2.4. Cookies

Cookies:保持一些连接中的记录(比如用户访问的内容,常见的有购物网站记录你常购买的类型)
Cookie的4则要素

  • Cookie回应头:一个保存了Cookie身份的头,由服务端发送
  • Cookie请求头:一个保存了Cookie身份的头,由客户端发送
  • Cookie文件:一个本地的Cookie文件,存于客户端的浏览器中
  • Cookie数据库:一个存储客户端Cookie信息的数据库,存在于服务端

2.5. 代理服务器 & Conditional GET

代理服务器(Web Caches/Proxy Servers):一个存储了部分回应内容的辅助服务器,通常被分布式设立在各地,当用户对总服务器发送请求时,会首先将请求送至最近的代理服务器,若代理服务器存在回应内容,直接回应,否则再将请求传递给总服务器

  • 代理服务器即是服务端也是客户端:当代理服务器向客户端提供回应内容时,代理服务器为服务端。而当代理服务器像总服务器发送请求时,代理服务器是客户端
  • 代理服务器可以存储所有内容吗:代理服务器可以存储的内容由总服务器决定,总服务器会在回应的头中注明代理服务器是否可以缓存这个内容
  • 为什么需要代理服务器:物理距离近,减少回应时间;分散网络交通,避免总服务器超载

Conditional GET:和GET类似的请求类型,但是会多一层版本检测,即检测本地对象的上次拉取时间是否迟于服务器的最后更新时间。如果是,服务器返回304 Not Modified表示对象是最新的。如果否,则返回200 OK和最新的对象

2.6. HTTP/2比HTTP/1好在哪里

可控传输顺序:传输顺序可以由客户端掌控(HTTP/1是FCFS,即Firsr Come First Serve的形式来传输对象的)
提前推出:服务端可以将没被需求的对象先推给客户端
Frame:服务端将对象分成大小一致的Frame,随后重新变更传输顺序,从而解决HOL Blocking问题

  • HOL Blocking(Header-of-Line Blocking):即前面有一个较大的文件,而后面都是很小的文件,因为大文件要先被传输,所有的小文件都要等待很长时间

3. 电子邮件,SMTP于IMAP

电子邮件3要素

  • 用户(User Agent):发送/接受/编辑邮件的端系统
  • 邮件服务器(Mail Server):存储所有邮件的数据中心,并从/向其他邮件服务器或者用户接受/传输邮件
  • 传输协议:SMTP, IMAP, HTTP等

3.1. SMTP

SMTP(Simple Mail Transfer Protocol):一个用于让用户向邮件服务器推送/发送邮件的协议

SMTP vs HTTP:

  • SMTP向外推送对象,HTTP向内拉取对象
  • SMTP能在同一消息的多个部分发送多个对象,HTTP一个消息只能发送一个对象
  • SMTP使用永久连接,而HTTP可以使用非永久和永久连接
  • SMTP和HTTP都有ASCII构成的指令,以及状态码(但两个协议的状态码作用不同)

实例:假设A给B发送一封邮件

  1. A在本地编辑邮件
  2. A发送邮件,邮件通过SMTP协议被推送至A的邮件服务器
  3. A的邮件服务器开始于B的邮件服务器建立TCP连接
  4. A的邮件服务器通过TCP连接(其实是SMTP协议,因为SMTP基于TCP)向B的邮件服务器推送邮件
  5. A的邮件服务器与B的邮件服务器断开TCP连接
  6. B的邮件服务器将邮件存入B的邮箱中

3.2. IMAP

IMAP(Internet Mail Access Protocol):IMAP是允许用户删除,阅读,打包邮件服务器上的内容的协议

实例:B阅读邮箱内的邮件

  1. B通过IMAP(或者HTTP)向B的邮件服务器发送阅读请求
  2. B的邮件服务器返回邮件内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值