文章目录
概述
网络应用模型
C/S
P2P(peer 2 peer同辈)
DNS系统(域名解析)
www:通常代表服务器名或者主机名
ping:用于测试网络的连通性
IPconfig和Winipcfg:查看IP的配置信息
我们访问网站的时候,都是通过域名来记住这些网站,并且去访问这个网站的,然而两个节点之间进行数据交换,归根到底还是要知道对方的ip地址,我们不去直接的记忆和访问这个IP地址,而是通过DNS系统来实现域名到IP地址的转换
- arpa域名:用于反向域名解析,就是由IP地址解析为域名,也就是IP地址到域名的一个映射
- 二级域名和顶级域名有一些重复的名称。
当顶级域名在使用国家级域名的时候,二级域名就可以用com、gov这类既是顶级又是二级的域名。
域名解析的过程中,主机先询问本地域名服务器,本地服务器再询问根域名服务器
FTP文件系统(基于C/S)
- 主进程用来接收客户进程的请求
- 从属进程就是用来处理客户进程发来的请求
- 主进程在收到请求之后,将这个请求任务分配给从属进程
- 控制进程和数据传送进程都是从属进程
- 控制连接端口为:21(一定),控制连接传送的是:请求,控制信息
- 数据连接端口为:20(不一定),数据连接传送的是:文件、数据
- 控制连接是一直打开的
- 数据连接根据是否有文件正在传送而进行开闭。
- 数据端口号与数据连接模式有关,数据连接模式包括主动(PORT)和被动(PASV)两种方式
- 主动(PORT):端口号20
- 被动(PASV):端口号大于1024
- 对于一个FTP服务器,他会有多个进程(1个主进程+n个从属进程)
主进程的作用:当客户端如果想要和服务器端进行交互的话,那么主进程就会先打开服务器端的这个21号端口,这个端口一打开,就表示FTP可以随时接收文件。之后,当客户发来了FTP请求,接下来就由剩余的n个从属进程来完成之后的操作
所以这个主进程就像一个大厅的迎宾
电子邮件
- 用户代理的四个功能:撰写、显示、处理、通信
用户代理和发件人是两个不一样的概念
用户代理:指的是可以发起邮件、撰写邮件的相关程序。其实就是一些邮箱系统- 邮件服务器:要保持24h持续工作。采用的是客户服务器的方式
- 用户代理的是将邮件发送给邮件服务器,邮件服务器的发送是将邮件发送给一个接收方的邮件服务器。
- 每一个邮件服务器既可以充当客户,又可以充当服务器
- SMTP协议:用户发送邮件。即把邮推出去
- 电子邮件组成:用户代理、邮件服务器、协议
- 读取文件的时候会使用不同的协议:POP3或者IMAP
SMTP协议
MIME协议
- MIME可以理解为在SMTP协议上进行扩充的一种手段
- MIME可以将一些非ASCII码的内容(图片、文字、视频)转换为7位ASCII码
- MIME可以使SMTP和POP3处理更多类型的数据
POP3协议+IMAP
- POP3的两种工作方式:
接收方从接收邮件服务器读取了邮件之后,接收服务器删除这份文件- 如果使用了IMAP协议
即使接收方从接收邮件服务器读取内容,接收服务器仍然保留这份文件
只有接收方删除了这个邮件,服务器才会把这个邮件删除
否则读取后,服务器是不会自动删除这个邮件的
IMAP是对POP3协议的一种优化
- 当客户程序打开这个IMAP服务器之后,用户可以看到是谁给我发来的邮件,如果用户需要打开这个邮件,那么这个邮件才会上传到用户的主机上
- IMAP也是在读取邮件时使用的协议
- IMAP可以只读取一个报文的首部,使用于低宽带的情况下。
- 比如用户可能不想取回一个大的视频
基于万维网的电子邮件(HTTP传输邮件)
- 基于万维网的电子邮件,只要是与用户代理相关的传输,都是用的HTTP协议,
- 两个服务器之间的协议仍然是SMTP
万维网
- 万维网上的资源是被编号的,统一资源定位符 URL可以唯一标识一个资源
HTTP协议
- HTTP就是规定你如何上网,以及这个服务器如何提供你请求的资源
- 浏览器在显示的时候,可以只下载文本部分
- 非持久性连接:浏览器向服务器发出http请求的时候,首先要建立一个TCP的连接(三次握手,需要1.5个RTT),由于在第三次握手的时候可以携带请求数据,所以之后服务器向浏览器再返回http响应报文就好了(需要0.5个RTT),有时候还要加上数据在传输过程中的传输时延t
因此对于非持久性连接,每发送一个HTTP请求就需要2个RTT+t(传输时延)- 持久性连接:分为非流水线and流水线两种
- 非流水线:类似于停等协议。就是说建立连接之后,发送方要发送下一个请求时必须要等待收到了上一个请求的确认才能发送。
所以它需要消耗1.5个RTT用于建立连接,然后除了第一个请求需要0.5个RTT,其余的请求都需要1个RTT,综述,发送k个请求,总共需要(1+k)个RTT- 流水线方式:建立连接之后,发送完一个请求,他不需要等待确认,可以持续发送,然后接收端连续返回确认。所以总共就需要2个RTT(1个用于建立连接,剩下的所有的请求都可以在一个RTT时间内完成请求)
HTTP协议是无状态的:就是说服务器没有记忆功能,不会记录这个用户曾经访问过多少次
- 非持久连接:万维网客户每次向万维网服务器发送请求,都要重新建立一次TCP连接,也就是3次握手之后,服务器才能将数据传给客户。
- 持久连接:只需要建立一次连接
- 持久连接又分为流水线和非流水线两种方式
3.1 非流水线方式:客户收到一个响应之后,才能发送第二个请求。就好像是停等协议
3.2 流水线方式:客户可以一次性发送多个请求,服务器依次回复响应- 非持久连接只能处理一个响应,持久连接可以处理多个响应
4.1 假设我们要访问一个.HTML文件,这个文件里面有10个jpg图片,如果采用非持久连接,那么我们就需要建立11次连接,首先是发起一个对这个html文件url的访问,当服务器传回这个html文件之后,发现这个文件中又包含10个jpg文件,由于我们说,每一个图片、音频等等在网络当中都是一个资源,所以说这又是引用出了10个资源,这10个资源还需要依次访问,每一次的访问都需要建立和释放连接。因此整个过程需要11个连接
4.2 如果是持续连接,那么就只需要建立一次连接
- 开始行:用于区分是请求报文or响应报文
- 方法:说明要对请求的对象进行那些操作(POST、GET、HEAD、CONNECT)书上265
- 版本:HTTP协议的版本
- 每一行结尾都有一个回车换行(CRLF),并且在首部结束还要多一个回车换行
- connection:表示连接方式,close表示非持续连接
- 为了保证这些隐私数据能加密传输,让HTTP运行安全的SSL/TLS协议上,即 HTTPS = HTTP + SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密