【计算机网络学习笔记】(二)应用层(1)

简介: 计算机网络---应用层研发应用程序的核心是写出能够运行在不同端系统和通过网络彼此通信的程序。
本系列为个人对计算机网络的学习笔记,本文的主要内容是SMTP协议及其在电子邮件上的应用。

计算机网络---应用层

研发应用程序的核心是写出能够运行在不同端系统和通过网络彼此通信的程序。

application architecture

  • 在C/S架构中,客户相互之间不直接通信,而是经由服务端。

在实际应用中,常常出现单独一台服务器主机跟不上其所有客户请求的情况,由此,数据中心出现了(由大量主机集中在一起组成),它常被用于创建强大的虚拟服务器。

  • P2P体系结构中,应用程序在间断连接的主机之间使用直接通信,对于数据中心几乎没有依赖。它最大的特性是可自拓展,但也因高度非集中结构面临安全、可靠等方面性能的挑战。

进程通信

运行在多个端系统上的程序是如何相互通信的?
实际上,相互通信的是进程(process)而不是程序(program)。接下来重点关注的是不同端系统间进程的通信。

客户端和服务器

定义发起通信的进程为客户进程,等待联系的为服务器。

一个进程可以同时是这两个(如一些P2P的文件共享应用)

socket(套接字)

进程通过叫socket的软件接口向网络发送或接收message(报文)

  • socket是同一台主机应用层与传输层之间的接口,也被称为应用程序和网络之间的API。
  • 应用程序开发者主要针对应用层,其对于socket在传输层的控制很有限。如:

    • 选择传输层协议
    • 也许能设定几个传输层参数

进程寻址

需指定两样东西:

  • 目标主机的ip地址
  • 目标主机的端口号(是哪个进程,或者具体点说,哪个socket,去接收)

传输层协议简介(注:此处重点关注其对应用层应用程序的影响,关于传输层后面的笔记会再重点介绍)

应用程序服务要求的四大维度

可靠数据传输

其中多媒体(音视频)应用可以容忍数据丢失,可使用UDP

吞吐量

(截止《计算机网络:自顶向下方法 第七版》出版),许多媒体应用是带宽敏感的,不过可以使用自适应编码技术对数字语音或视频与当前可用带宽相匹配的速率进行编码

定时

即低延迟

安全性

数据传输过程中的加密解密

TCP服务

  • 面向连接的服务

TCP的握手是为了提醒双方为大量分组的到来作准备。

之后,一条连接通道建立。

传输结束后,必须拆除该连接。

  • 数据传输服务是可靠的
  • 拥塞控制机制

出现阻塞时,会抑制发送进程。

TCP服务的安全性问题-SSL

TCP和UDP都没有安全加密机制,SSL(secure socket layer)是在应用层上对TCP的加强(故不是与TCP,UDP在一个层次上的)

UDP服务

  • 定位:不提供不必要服务

与TCP相比:

  • 无握手过程,无连接
  • 不保证报文将到达接收进程,不保证报文到达顺序(即可能乱序)
  • 没有拥塞控制机制

可用它选定的任何速率向下(网络层)注入数据

不过实际端到端吞吐量小于该速率可能是由于中间链路带宽受限或拥塞造成的。

注意事项

  • TCP UDP本身并不提供吞吐量定时的保证,不过现实中可以通过一些巧妙设计实现这些要求。
  • 许多防火墙被设置成阻挡UDP流量。故很多电话应用会将TCP作为备份。

应用层协议

注:应用层协议只是网络应用的一部分

(读者注:虽然我不太明白这个强调有什么意义,因为这似乎是直觉上也可以知道的)

应用层协议包含如下内容:

  • 交换的报文类型(是请求的还是响应的)
  • 报文的语法,字段是如何描述的;字段的语义
  • 字段发送报文的时机及规则

HTTP协议(HyperText Transfer Protocol)

概况

  • HTTP使用TCP作为支撑运输协议。

一旦客户向它的套接字接口发送一个请求报文,该报文就脱离了客户控制并进入TCP的控制。

  • HTTP是一个无状态协议。

连接方式

HTTP默认模式是使用带流水线的持续连接。(但也能通过配置修改)

什么是持续连接?

所有请求和响应都经过相同TCP连接发送。

(读者注:意思就是一个一口气TCP承包所有,所以能连续,省去了建立一个新TCP之类的开销)

相对应地,每个请求/相应都得对应一个单独的TCP称为 非持续连接 。

在非持续连接的情况下,从服务器向客户传送一个web页面的过程发生了什么?

  • HTTP客户进程在(HTTP默认)端口号80发起一个到服务器的TCP连接。
  • 客户经其socket向该服务器发送一个HTTP请求报文。
  • 服务器经它的socket接收报文,并从存储器中检索对象(Web页面由对象组成,此处的对象对应于URL里面提到的内容),在响应报文中封装对象,并通过socket发啊送相应报文。
  • 服务器进程通知TCP断开连接。
  • 待客户接收响应报文后,TCP的连接才真正关闭。

具体如下图所示:

image.png

报文格式

image.png

常用状态码

  • 404 Not Found 被请求的文档不在服务器上
  • 200 OK 请求成功
  • 301 Moved Permanently 请求对象被永久转移,响应报文的Location一行有新的URL(客户软件会自动获取)
  • 400 Bad Request 该请求无法被服务器理解
  • 505 HTTP Version Not Supported

cookie

cookie技术由以下四个部分组成:

  • HTTP响应报文中的cookie header line
  • HTTP请求报文中的cookie header line
  • 用户端系统中有一个cookie文件,由浏览器管理
  • web站点后端的一个数据库

我个人理解,这就相当于,在首次发送报文的时候,web服务器为用户创建了一个标识id,此后用户访问其他站点时报文都会带上这个id,所以相当于web服务器追踪到了用户访问的其他站点信息。

Web缓存(代理服务器)

image.png

相关文章
|
5月前
|
存储 分布式计算 监控
应用层---网络模型
应用层---网络模型
47 3
|
1月前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
459 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
5月前
|
存储 算法 网络虚拟化
【计算机网络】学习笔记,第三篇:数据链路层
现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了 利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的
81 5
|
1月前
|
域名解析 网络协议 前端开发
【第四期】网络层、传输层、应用层
【第四期】网络层、传输层、应用层
25 3
|
1月前
|
XML JSON 网络协议
【网络】TCP/IP五层网络模型:应用层
【网络】TCP/IP五层网络模型:应用层
21 1
|
1月前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
41 0
|
3月前
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习+面经】Transformer 网络学习笔记
Transformer模型的核心概念、优缺点以及在多个领域的应用,并提供了针对Transformer架构的面试问题及答案。
159 2
|
4月前
|
域名解析 存储 网络协议
一次读懂网络分层:应用层到物理层全解析
**网络五层模型简介:** 探索网络服务的分层结构,从应用层开始,包括HTTP(网页传输)、SMTP(邮件)、DNS(域名解析)和FTP(文件传输)协议。传输层涉及TCP(可靠数据传输)和UDP(高效但不可靠)。网络层由IP(路由数据包)、ICMP(错误报告)和路由器构成。数据链路层处理MAC地址和帧传输,物理层规定了电缆、连接器和信号标准。了解这些基础,有助于深入理解网络运作机制。
348 5
|
5月前
|
域名解析 存储 缓存
【基础计算机网络】应用层
【基础计算机网络】应用层
|
5月前
|
网络协议
计算机网络学习记录 应用层 Day6(1)
计算机网络学习记录 应用层 Day6(1)
34 0