计算机网络学习笔记(3)

2.1 互联网和应用原理浅析

首先回溯一下上次的内容。上次的笔记简要分析了数据包分层打包传输的过程,其中两端的平行层之间连线了,这其实并不严谨。服务仅存在于上下层之间,平行层之间是没有服务的联系的,只有协议的联系(如下图所示)。至于协议的定义会很快进行说明。

计算机网络学习笔记(3)_第1张图片

1. 制作互联网应用

在制作互联网应用时,实际上只需考虑两点:

        1. 传输层提供的服务

        2. 对于以上的服务来说,应用界面接口是怎样的

整个过程并不需要交换机、路由器等互联网核心服务参与

计算机网络学习笔记(3)_第2张图片

2. 两种通讯方式简介----客户和服务器client and server

Client and server(cs)是历史最悠久的,使用最久的通讯方式。

在这种通讯模式下,server是一种永远开启的服务器,拥有永恒的IP地址且一般位于数据中心。Client则拥有可变的IP地址且并不永远开启。Client可以和server通讯,但不能在相互之间进行通讯。典型的例子是HTTP,server是网络服务器,client是浏览器(用户)。

计算机网络学习笔记(3)_第3张图片

 3. 两种通讯方式简介----用户和用户 peer to peer

在这种通讯模式下并不会存在一个永远开启的服务端,取而代之的是用户自身会充当这一角色。在这种通讯模式下任意终端都可以实现直连。用户向其他用户请求服务,与此同时也向其他用户提供服务

self scalability – new peers bring new service capacity, as well as new service demands

 自我扩充性:新加入的用户不但意味着可提供的服务增加,需要提供的需求也会增加。

P2P通讯时,用户可以任意变换IP地址,同时也不是随时开启服务。因此管理更为复杂

应用案例是P2P下载。用户向其他用户请求资源,自身也提供资源给其他用户下载

计算机网络学习笔记(3)_第4张图片

4. 进程通讯 

进程:服务器上运行的程序

进程在同一服务器内应用进程间通讯,不在同一服务器内应用message进行通讯。(详见操作系统)

client process:发起交流的进程

server process:等候交流的进程

在P2P环境下每个用户同时拥有以上两种进程

5. 应用层通讯协议--socket协议

用户在socket上发送、接收信息

socket和门类似

socket发送信息并将其从门外推出

socket依靠对方的传输基础设施传输信息,传输信息的双方都需要存在一个socket(没太懂这里)

计算机网络学习笔记(3)_第5张图片

6.通讯--确定对方地址 

通讯时,需要唯一标识确定对方的地址

服务器的地址拥有32位唯一指示符,但这还不够准确。需要IP地址和端口号一起确定对方地址。

例子:

计算机网络学习笔记(3)_第6张图片

7. 协议规则

 当定义一个协议时,需要定义:
1. 进行交换的信息类型

2. 信息语法

3. 信息语义--具体信息的定义

4. 交换时间和方法的规则

协议共分为两种,分别是:

1. 开放式协议,比如RFC,HTTP等,允许用户在线编辑

2. 封闭式协议,比如ZOOM等

8. 传输服务

传输服务需要:

1. 数据完整性 有的文件很需要数据完整,有的则不用

2. 时间容忍 有的进程无法容忍时延

3. 吞吐量 例如直播推流需要保证一定的吞吐量 而灵活的应用则不用(elastic app)

4. 安全性 可能有加密传输

下面展示了主流应用是否需要以上服务

计算机网络学习笔记(3)_第7张图片

8. 互联网协议--TCP和UDP

TCP提供: 

1. 可靠的进程接收 发送传输

2. 流控制 防止发送端速率过快使接收端应接不暇

3. 节流阀机制 当网络信道过于拥挤时,节制用户发送包裹

4. 面向链接 发送和接收端需要首先建立链接再进行传输

TCP不提供:时间容忍 最小吞吐量保证 安全性

UDP提供不可靠的数据传输服务,但其速率较快,因此和TCP同时应用

下图展示了两种协议的使用情况

计算机网络学习笔记(3)_第8张图片

 9. TCP的安全优化

原版的TCP和UDP协议不具备加密,密码靠明文形式传输,因此很不安全

加入了传输层安全保障Transport Layer Security 之后,TCP协议变得更为安全

TLS提供加密机制,保证了数据完整性 同时加入了终端用户身份认证

TSL在应用层的使用:

应用在使用TCP的同时也使用TSL库

明文加入socket之后,由网络遍历进行加密

2.2 网络和HTTP协议

1. 万维网初见

万维网由object组成,现在我们可以看到的网页其实就是多个object的集合

object包括:HTML文件,JPEG文件,音频文件等

其中,HTML文件是构成网页的核心,其中存储其他文件的路径,命名为URL(唯一资源定位符)

下面展示了一个典型的网络路径,前半部分是端地址,后半部分是文件路径 

计算机网络学习笔记(3)_第9张图片

2. HTTP协议浅析

HTTP:hypertext transfer protocol 超文本传输协议

HTTP是万维网在应用层的协议

在CS传输模式中,client指的是请求并接受展示的浏览器,server指的是接受请求的服务端

计算机网络学习笔记(3)_第10张图片

 不管是PC端还是移动端,应用HTTP协议的步骤都类似

HTTP应用TCP作为其基本协议,基本传输过程如下:

1. client启动TCP协议

2. server接收并响应协议

3. 二者之间的文件传输开始进行

4. 传输完成,协议关闭

由于只要传输过程完成就会关闭协议,因此说HTTP是一种“无状态协议”(stateless)

HTTP协议的分类---持续和非持续

1. 非持续型HTTP协议

首先对于这种链接的过程进行简要描述:

1a. client发起协议请求

1b. 服务器认可请求并传送给client

2. client将请求的URL以http message的形式发送给服务端(先传到socket再发送)

3. 服务端接到请求,找到需要的文件并进行封装

4. TCP链接被服务端关闭

5. client接收到所需文件

6. 如果需要其他文件,就需要不断重复这个过程

从这里可以分析非连续链接的特点:

每次协议只能进行一次object的传输,其余的需要不断重复,串行传输

非持续链接的响应时间衡量

可以通过往返时间(RTT)判断响应时间快慢

RTT:一个短分组从客户到服务端再返回客户所需时间

计算响应时间时,由于请求链接和请求文件各自消耗一个RTT,所以我们要用两个RTT加上文件传输所需时间

Non-persistent HTTP response time =  2RTT+ file transmission  time

非持续传输的模型如下:

计算机网络学习笔记(3)_第11张图片 

非持续链接的弊端

1. 需要两次RTT时间,时间消耗较长

2. 需要开启多个TCP协议,OS开销较大

3. 要开启多个平行的TCP协议,增大负荷

2. 持续型链接

在HTTP1.1环境下,采用持续链接的用户和服务端可以在同一个协议下实现多个文件传输,更有甚者甚至可以使同一服务器的web页面都实现同一协议之下进行传输,在传输文件的过程中协议持续开启

HTTP报文格式

HTTP协议通过发送报文的形式进行请求和响应,报文也因此分为请求报文和响应报文两种

请求报文

Get /somedir/page.html HTTP1.1
Host: www-net.cs.umass.edu\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0 \r\n
Accept: text/html,application/xhtml+xml\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip,deflate\r\n
Connection: keep-alive\r\n
\r\n

上面展示的就是典型的请求报文。其中第一行称为请求行(request line),后继的行称为首部行。

请求行包含了实现请求的方法,URL字段和HTTP版本字段

首部行第一行展示了对象所在的主机,第二行展示了客户代理(浏览器类型),第四行展示了用户想得到的对象版本(在这里是英语),第六行展示了用户想按照连续链接进行传输

计算机网络学习笔记(3)_第12张图片

响应报文

一个典型的响应报文如下图所示:

HTTP/1.1 200 OK
Date: Tue, 08 Sep 2020 00:53:20 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.9 mod_perl/2.0.11 Perl/v5.16.3
Last-Modified: Tue, 01 Mar 2016 18:57:50 GMT
ETag: "a5b-52d015789ee9e"
Accept-Ranges: bytes
Content-Length: 2651
Content-Type: text/html; charset=UTF-8
\r\n
data data data data data ... 

 它具有三个部分:一个初始状态行,6个首部行,然后是实体体

最后一行就是实体体,它包含所请求对象本身,状态行和前面一样分为三个字段,分别是版本字段,状态码和状态信息,这里表示一切正常

Date:产生报文的日期和时间,指的是发送时刻的时间

Server:类似user agent

Last modified:展示了对象创建、最后修改的时间

Content length:发送文件的字节数

典型的状态码:

200 OK

request succeeded, requested object later in this message

301 Moved Permanently

requested object moved, new location specified later in this message (in Location: field)

400 Bad Request

request msg not understood by server

404 Not Found

requested document not found on this server

505 HTTP Version Not Supported

 COOKIE 用户和服务器的交互

由于HTTP是无状态协议,一旦协议关闭,服务端和用户的联系也随即消失。为此,为了让服务端识别用户,引入了cookies

Cookie的四个组件

1. 响应报文的一个cookie首部行

2. 请求报文的一个cookie首部行

3. 在用户端系统保存一个cookie文件,由浏览器管理

4. 在web站点的一个后端数据库

Cookie的应用实例

计算机网络学习笔记(3)_第13张图片

​​​​​​​

上图展示了用户在含有cookie的情况下访问服务器的过程。假设用户之前没有访问过亚马逊网站,当他访问时,服务器就会自动创建一个cookie给他,并传送到他的浏览器中。当他访问每个页面时都会带着这个cookie访问。当他一周后再访问时,服务器就会按照他上周访问的页面向他推荐商品

因此 cookie能够

进行用户标识

向用户进行智能推荐

记录用户状态

但与此同时,由于能够记录用户的相关信息,cookie也被认为是对用户隐私的一种侵害 

你可能感兴趣的:(学习,网络,网络协议)