文章目录

  • 一、TCP对应的应用层协议
  • 二、FTP协议
    • 1、主动模式和被动模式
    • 2.查看ftp服务器上的文件
    • 3、下载文件
    • 4、上传文件
    • 5、 其他FTP命令
  • 三、SMTP协议(邮件传送协议)
  • 四、万维网和HTTP协议
    • 万维网
    • 超文本传输协议HTTP
    • 完整的HTTP请求过程包括哪些内容?
    • 在浏览器中输入url地址后显示主页的过程?
    • 在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?
    • HTTP的缺点有哪些?
    • Cookie是什么?
    • Cookie有什么用途?
    • Session
    • Session的工作原理是什么?
    • Cookie与Session的对比
    • HTTP请求方法你知道多少?
    • HTTP长连接和短连接的区别
    • 一个TCP连接可以对应几个HTTP请求?**
    • 一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?
    • 浏览器对同一 Host 建立 TCP 连接到数量有没有限制?
  • HTTPS
    • HTTPS是什么?
    • https实现原理
  • HTTPS和HTTP的区别
  • 总结

一、TCP对应的应用层协议

FTP:文件传输协议,使用21端口(控制端口)
SSH:安全外壳协议:专为远程登录会话和其他网络服务提供安全性的协议,22端口
Telnet:远程登陆协议,23端口(可用于判断对方服务是否启动)
SMTP:定义了简单邮件传送协议,服务器开放的是25号端口。
POP3:它是和SMTP对应,POP3用于接收邮件110端口。
HTTP: 超文本传输协议

二、FTP协议

1、主动模式和被动模式

  1. 通信端口
    利用ftp传输过程中,主要使用到两个端口,一个是控制端口,一个是数据端口,控制端口一般为21,而数据端口不一定是20,这和FTP的应用模式有关,如果是主动模式,就是为20,如果为被动模式,由服务器端和客户端协商而定。

主动模式:服务端主动给客户端传输文件。
被动模式:服务端的文件被客户端取走

2.查看ftp服务器上的文件

dir:显示服务器目录和文件列表
ls:显示服务器目录和文件列表
cd:进入服务器指定的目录
lcd:进入本地客户端指定的目录。

3、下载文件

ftp的传输模式分为ASCII码方式和二进制方式两种,二进制方式可以传输任何文件,包括压缩包、可执行程序、图片、视频、音频等,而ASCII码方式只能传输.txt、.htm等ascii码文件。在实际开发中,不管什么文件,都用二进制方式传输文件。
1、type:查看当前的传输方式

2、ascii:设定传输方式为ASCII码方式

3、binary:设定传输方式为二进制方式

4、get/recv:下载单个文件get filename [newname](filename为下载的ftp服务器上的文件名,newname为保存在本都计算机上时使用的名字,如果不指定newname,文件将以原名保存。
get/recv命令下载的文件将保存在本地计算机的工作目录下。该目录是启动ftp客户端时的工作目录目录。如果想修改本地计算机的工作目录,可以使用 lcd 命令。比如:lcd /tmp 表示将工作目录设定/tmp/目录。

5、mget:下载多个文件mget filename [filename …](mget命令支持通配符“*”和“?”,比如:mget *.jpg 表示下载ftp服务器当前目录下的所有扩展名为jpg的文件。)

6、prompt:关闭/打开互交提示。

4、上传文件

put/send:上传单个文件put filename [newname]
filename为上传的本地文件名,newname为上传至ftp服务器上时使用的名字,如果不指定newname,文件将以原名上传。

mput:上传多个文件mput filename [filename …]
mput命令支持通配符“*”和“?”,比如:mput *.jpg 表示上传客户端服务器当前目录下的所有扩展名为jpg的文件。

prompt:关闭/打开互交提示。

5、 其他FTP命令

pwd:查看ftp服务器上的当前工作目录

rename filename newfilename:重命名ftp服务器上的文件

delete filename:删除ftp服务器上一个文件。

mdelete [remote-files] :删除多个文件。

mkdir pathname:在服务器上创建目录。

rmdir pathname:删除服务器上的目录。

passive:主动模式与被动模式切换。

nlist:列出服务器目录中的文件名,如:nlist /home/wucz /tmp/tmp.list,表示把服务器上/home/wucz目录下的文件列出来,结果输出到本地的/tmp/tmp.list文件中。
help [cmd]:显示ftp命令的帮助信息,cmd是命令名,如果不带参数,则显示所有ftp命令。

三、SMTP协议(邮件传送协议)


SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息
负责发送邮件的的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器
SMTP规定了14条命令和21种应答信息,

网际报文存取协议IMAP
IMAP协议比POP协议复杂。当用户Pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)。

四、万维网和HTTP协议

万维网

万维网 (World Wide Web)是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合。
统一资源定位符URL 唯一标识 ->资源(文字、视频、音频…)
URL一般形式:
<协议>:/<主机>:<端口>/<路径>http://www.pku.edu.cn
http 域名
ftp IP地址
用户通过点击超链接(http://www.baidu.com)获取资源,这些资源通过超文本传输协议(HTTP)传送给使用者。
万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。万维网使用超文本标记语言HTML)使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能
够在自己的屏幕上显示出来。

超文本传输协议HTTP

HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

完整的HTTP请求过程包括哪些内容?

域名解析–>发起TCP的3次握手–>建立TCP连接后发起http请求–>服务器响应http请求,浏览器得到html代码-->浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)–>浏览器对页面进行渲染呈现给用户

在浏览器中输入url地址后显示主页的过程?

根据域名,进行DNS域名解析;
拿到解析的IP地址,建立TCP连接;
向IP地址,发送HTTP请求;
服务器处理请求;
返回响应结果;
关闭TCP连接;
浏览器解析HTML;
浏览器布局渲染;

在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?

1、查浏览器缓存,看看有没有已经缓存好的,如果没有

2 、检查本机host文件

3、调用API,Linux下Scoket函数 gethostbyname

4、向DNS服务器发送DNS请求,查询本地DNS服务器,这其中用的是UDP的协议

6、如果在一个子网内采用ARP地址解析协议进行ARP查询如果不在一个子网那就需要对默认网关进行DNS查询,如果还找不到会一直向上找根DNS服务器,直到最终拿到IP地址(全球好像一共有13台根服务器)

7、这个时候我们就有了服务器的IP地址 以及默认的端口号了,http默认是80 https是 443 端口号,首先尝试http然后调用Socket建立TCP连接,

8、经过三次握手成功建立连接后,开始传送数据,如果正是http协议的话,就返回就完事了,

9、如果不是http协议,服务器会返回一个5开头的的重定向消息,告诉我们用的是https,那就是说IP没变,但是端口号从80变成443了,好了,再四次挥手,完事,

10、再来一遍,这次除了上述的端口号从80变成443之外,还会采用SSL的加密技术来保证传输数据的安全性,保证数据传输过程中不被修改或者替换之类的,

11、这次依然是三次握手,沟通好双方使用的认证算法,加密和检验算法,在此过程中也会检验对方的CA安全证书。

12、确认无误后,开始通信,然后服务器就会返回你所要访问的网址的一些数据,在此过程中会将界面进行渲染,牵涉到ajax技术之类的,直到最后我们看到色彩斑斓的网页

HTTP的缺点有哪些?

使用明文进行通信,内容可能会被窃听;
不验证通信方的身份,通信方的身份有可能遭遇伪装;
无法证明报文的完整性,报文有可能遭篡改。

Cookie是什么?

HTTP协议是无状态的,主要是为了让HTTP协议尽可能简单,使得它能够处理大量事务,HTTP/1.1引入Cookie来保存状态信息。

Cookie是服务器发送到用户浏览器并保存在本地的一小块数据。

它会在浏览器再次向同一服务器发起请求时被携带上,用于告知服务端两个请求是否来自同一浏览器。

由于之后每次请求都需要携带Cookie数据,因此会带来额外的性能开销(尤其是在移动环境下)。

Cookie曾一度用于客户端数据的存储,因为当时并没有其它合适的存储办法而作为唯一的存储手段,但现在随着现代浏览器开始支持各种各样的存储方式,Cookie渐渐被淘汰。

新的浏览器API已经允许开发者直接将数据存储到本地,如使用Web storage API(本地存储和会话存储)或IndexedDB。

cookie的出现是因为HTTP是无状态的一种协议,换句话说,服务器记不住你,可能你每刷新一次网页,就要重新输入一次账号密码进行登录。这显然是让人无法接受的,cookie的作用就好比服务器给你贴个标签,然后你每次向服务器再发请求时,服务器就能够通过cookie认出你。

抽象地概括一下:一个cookie可以认为是一个「变量」,形如name=value,存储在浏览器;一个session可以理解为一种数据结构,多数情况是「映射」(键值对),存储在服务器上。

Cookie有什么用途?

1、会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
2、个性化设置(如用户自定义设置、主题等)
3、浏览器行为跟踪(如跟踪分析用户行为等)

Session

除了可以将用户信息通过Cookie存储在用户浏览器中,也可以利用Session存储在服务器端,存储在服务器端的信息更加安全。
Session可以存储在服务器上的文件、数据库或者内存中。也可以将Session存储在Redis这种内存型数据库中,效率会更高。
使用Session维护用户登录状态的过程如下:
用户进行登录时,用户提交包含用户名和密码的表单,放入HTTP请求报文中;
服务器验证该用户名和密码,如果正确则把用户信息存储到Redis中,它在Redis中的Key称为Session ID;
服务器返回的响应报文的Set-Cookie首部字段包含了这个Session ID,客户端收到响应报文之后将该Cookie值存入浏览器中;
客户端之后对同一个服务器进行请求时会包含该Cookie值,服务器收到之后提取Session ID,从Redis中取出用户信息,继续之前的业务操作。
注意:Session ID的安全性问题,不能让它被恶意攻击者轻易获取,那么就不能产生一个容易被猜到的Session ID值。此外,还需要经常重新生成Session ID。在对安全性要求极高的场景下,例如转账等操作,除了使用Session管理用户状态之外,还需要对用户进行重新验证,比如重新输入密码,或者使用短信验证码等方式。

Session的工作原理是什么?

session的工作原理是客户端登录完成之后,服务器会创建对应的session,session创建完之后,会把session的id发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着sessionid,服务器拿到sessionid之后,在内存找到与之对应的session这样就可以正常工作了。

Cookie与Session的对比

HTTP作为无状态协议,必然需要在某种方式保持连接状态。这里简要介绍一下Cookie和Session。
Cookie
Cookie是客户端保持状态的方法。
Cookie简单的理解就是存储由服务器发至客户端并由客户端保存的一段字符串。为了保持会话,服务器可以在响应客户端请求时将Cookie字符串放在Set-Cookie下,客户机收到Cookie之后保存这段字符串,之后再请求时候带上Cookie就可以被识别。
除了上面提到的这些,Cookie在客户端的保存形式可以有两种,一种是会话Cookie一种是持久Cookie,会话Cookie就是将服务器返回的Cookie字符串保持在内存中,关闭浏览器之后自动销毁,持久Cookie则是存储在客户端磁盘上,其有效时间在服务器响应头中被指定,在有效期内,客户端再次请求服务器时都可以直接从本地取出。需要说明的是,存储在磁盘中的Cookie是可以被多个浏览器代理所共享的。
Session
Session是服务器保持状态的方法。
首先需要明确的是,Session保存在服务器上,可以保存在数据库、文件或内存中,每个用户有独立的Session用户在客户端上记录用户的操作。我们可以理解为每个用户有一个独一无二的Session ID作为Session文件的Hash键,通过这个值可以锁定具体的Session结构的数据,这个Session结构中存储了用户操作行为。



请求报文:请求行;请求头;请求体
响应报文:状态行,响应头,响应体

HTTP请求方法你知道多少?

客户端发送的 请求报文 第一行为请求行,包含了方法字段。
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

说明:
1、get 是获取数据,post 是修改数据。

2、get 把请求的数据放在URL上,以?分割URL和传输数据,参数之间以&相连,所以get不太安全,而post把数据放在HTTP的包体内。

3、get提交的数据最大是2k( 限制实际上取 决于浏览器), post理论上没有限制。

4、get产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
post产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

5、get请求会被浏览器主动缓存,而post不会,除非手动设置。

6、 本质区别:get是幂等的,而post 不是幂等的

这里的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。简单来说意味着对同一URL的多个请求应该返回相同的结果。

正因为它们有这样的区别,所以不应该且不能用get请求做数据的增删改这些有副作用的操作。因为get请求是幂等的,在网络不好的隧道中会尝试重试。如果用get请求增数据,会有重复操作的风险,而这种重复操作可能会导致副作用(浏览器和操作系统并不知道你会用get请求去做增操作)。

HTTP长连接和短连接的区别

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。

一个TCP连接可以对应几个HTTP请求?**

如果维持连接,一个 TCP 连接可以发送多个 HTTP 请求的。

一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?

HTTP/1.1 存在一个问题,单个 TCP 连接在同一时刻只能处理一个请求,意思是说:两个请求的生命周期不能重叠,任意两个 HTTP 请求从开始到结束的时间在同一个 TCP 连接里不能重叠。

在 HTTP/1.1 存在 Pipelining 【paɪplaɪnɪŋ, 流水线】技术可以完成多个请求同时发送,但浏览器默认关闭,所以可以认为这是不可行的。
在 HTTP2 中由于 Multiplexing【ˈmʌltɪˌpleksɪŋ,多路技术】 特点的存在,多个 HTTP 请求可以在同一个 TCP连接中并行进行。

那么在 HTTP/1.1 时代,浏览器是如何提高页面加载效率的呢?主要有下面两点:
维持和服务器已经建立的 TCP 连接,在同一连接上顺序处理多个请求。
和服务器建立多个 TCP 连接。

浏览器对同一 Host 建立 TCP 连接到数量有没有限制?

假设我们还处在 HTTP/1.1 时代,那个时候没有多路传输,当浏览器拿到一个有几十张图片的网页该怎么办呢?肯定不能只开一个 TCP 连接顺序下载,那样用户肯定等的很难受,但是如果每个图片都开一个TCP 连接发 HTTP 请求,那电脑或者服务器都可能受不了,要是有 1000 张图片的话总不能开 1000 个TCP 连接吧,你的电脑同意 NAT 也不一定会同意。

有。Chrome 最多允许对同一个 Host 建立六个 TCP 连接。不同的浏览器有一些区别。

如果图片都是 HTTPS 连接并且在同一个域名下,那么浏览器在 SSL 握手之后会和服务器商量能不能用HTTP2,如果能的话就使用 Multiplexing 功能在这个连接上进行多路传输。不过并非所有挂在这个域名的资源都会使用一个 TCP 连接去获取,但是可以确定的是 Multiplexing 很可能会被用到。

如果发现用不了 HTTP2 呢?或者用不了 HTTPS(现实中的 HTTP2 都是在 HTTPS 上实现的,所以也就是只能使用 HTTP/1.1)。那浏览器就会在一个 HOST 上建立多个 TCP 连接,连接数量的最大限制取决于浏览器设置,这些连接会在空闲的时候被浏览器用来发送新的请求,如果所有的连接都正在发送请求那其他的请求就只能等待了。

HTTPS

HTTPS是什么?

HTTPS并不是新协议,而是让HTTP先和SSL(Secure Sockets Layer)通信,再由SSL和TCP通信,也就是说HTTPS使用了隧道进行通信。通过使用SSL,HTTPS具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

https实现原理

HTTPS在内容传输的加密上是对称加密(1、非对称加密的加解密效率是非常低2、在HTTPS的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,)
证书验证阶段非对称加密。

HTTPS和HTTP的区别

1、HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
2、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

什么是SSL/TLS?
SSL代表安全套接字层。它是一种用于加密和验证应用程序(如浏览器)和Web服务器之间发送的数据的协议。身份验证,加密Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。
SSL/TLS协议作用:认证用户和服务,加密数据,维护数据的完整性的应用层协议加密和解密需要两个不同的密钥,故被称为非对称加密;加密和解密都使用同一个密钥的
对称加密:优点在于加密、解密效率通常比较高,HTTPS是基于非对称加密的,公钥是公开的

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

TCP对应的应用层协议之FTP /SMTP / HTTP相关推荐

  1. [计算机网络]应用层协议,HTTP,SMTP,DNS

    应用层 应用层协议原理 网络应用程序体系结构 规定如何在各种端系统上组织应用程序,由研发者设计 客户机/服务器 服务器:对外提供服务的一系列硬件和软件 客户机:使用服务器提供的服务 服务器 7*24小 ...

  2. TCP/IP协议族之应用层协议(FTP、TFTP)

    文件传送协议FTP: File Transfer Protocol 是因特网上使用得最广泛的文件传送协议.提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存 ...

  3. 基于TCP或UDP的应用层协议有哪些?——Linux网络编程

    参考博文01:https://blog.csdn.net/Wu000999/article/details/89293717 博文02 https://blog.csdn.net/u014082714 ...

  4. 常见的基于TCP或UDP的应用层协议

    基于TCP的应用层协议有:SMTP.TELNET.HTTP.FTP 基于UDP的应用层协议:DNS.TFTP(简单文件传输协议).RIP(路由选择协议).DHCP.BOOTP(是DHCP的前身).IG ...

  5. 【详解】以下关于TCP/IP协议栈中协议和层次的对应关系正确的是()

    以下关于TCP/IP协议栈中协议和层次的对应关系正确的是 解析: TCP协议和UDP协议都是基于IP协议的. 基于TCP的应用层协议:FTP.Telnet.SMTP.HTTP.POP3与DNS 基于U ...

  6. 计算机网络——应用层(http、SMTP、DNS)

    目录 一.应用层协议原理: 1.网络应用程序体系结构: 1.1 客户-服务器体系: 1.2 P2P体系结构: 2.进程通信: 2.1基本了解: 2.2客户-服务器进程: 2.3进程与计算机网络之间的接 ...

  7. 计算机网络中常见的应用层协议介绍

    应用层的协议分类: 基于tcp的协议:POP3 ,FTP, HTTP, Telnet, SMTP: 基于udp的协议:DHCP,TFTP,SNMP,DNS,RIP. 各协议的介绍(含端口号) POP3 ...

  8. 计算机网络--应用层-应用层协议原理

    应用层-应用层协议原理 应用层协议原理 网络应用程序体系结构 客户-服务器体系结构 P2P体系结构 进程通信 客户和服务器进程 进程与计算机网络之间的接口 进程寻址 可供应用程序使用的运输服务 可靠数 ...

  9. ftp协议是一种用于_______的协议_网络安全常见协议解析:TCP、UDP、HTTP、FTP、SMTP等之间的区别...

    了解网络安全行业的都知道,网络安全协议是营造网络安全环境的基础,是构建安全网络的关键技术.常见的网络协议如HTTP协议.TCP/IP协议.FTP协议等. 如果你想进入网安行业,这些协议都是需要重点要学 ...

最新文章

  1. USB接口供电蓝牙彩色灯带控制器
  2. 常考数据结构与算法:用两个栈实现队列
  3. Extension project - Component.js of standard application could not be loaded
  4. 51nod1355-斐波那契的最小公倍数【min-max容斥】
  5. Tomcat log文件
  6. android: 记录及回复lisView的位置
  7. java eclipse 入门_Eclipse使用入门教程介绍
  8. 软件究竟是如何传播的?
  9. 在MySQL中,一条查询语句是如何执行的
  10. Flex与.NET互操作:基于WebService的数据访问
  11. MySQL编译安装时常见错误分析
  12. java笔试题及答案
  13. vue-pdf分页预览
  14. JS-a标签下载文件
  15. Typora(就是个浏览器)自定义设置。附带:Typora免费版链接
  16. gif转为帧(gif分解)加分解图片批量打包下载
  17. oracle如何删除用户的表空间,Oracle 删除用户和表空间
  18. 携程——聪明的猴子 (容斥定理)
  19. 如何在Oracle中检测和修复块损坏
  20. POSCMS LOGO替换

热门文章

  1. 公司承担的国家发改委高技术产业化示范工程
  2. mysql手工注入——盲注
  3. [Python人工智能] 十五.无监督学习Autoencoder原理及聚类可视化案例详解
  4. [JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作
  5. 【数据结构与算法】之深入解析“H指数”的求解思路与算法示例
  6. iOS之仿QQ好友列表展开收缩效果的实现
  7. 深度学习——02、深度学习入门 1-7
  8. 【机器视觉】 convert_vector_to_tuple算子
  9. 【C++】Visual Studio教程(十二) -代码编辑器功能
  10. 【Linux】一步一步学Linux——ipcalc命令(191)