TCP/IP协议族-应用层协议http|DNS|smtp|ftp简介

在庞大的TCP/IP协议族5层模型中,网络应用层是位于最上层的,其应用模型主要分为两种:客户/服务器模型(client/server,C/S),P2P模型。

在客户/服务器模型中,有一个总是打开的主机称为服务器,服务于许多来自其他客户机的主机请求,其工作流程如下:

  • 1)服务器处于接收请求的状态
  • 2)客户机发出服务请求,等待接收结果
  • 3)服务器收到请求后,分析请求,进行必要处理后,将结果返回客户机。

常见的C/S模型的应用包括:Web应用-http/https文件传输-ftp域名解析-DNS远程登录-ssh电子邮件-smtp/pop3等。

在P2P模型中,与C/S不同的是,网络中的每个主机都可以作为客户机也可以作为服务器,没有固定的客户与服务的划分,任意一对计算机称为对等方。

下面来看看基于C/S模式的应用。

1.域名系统-DNS

域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来转换方便人记忆的特定主机名和便于机器处理的IP地址,DNS系统采用客户/服务器模型,协议运行在UDP上,使用端口:53。

概念上DNS分3部分:层次域名空间、域名服务器、解析器。

层次域名空间

因特网采用层次树状结构命名的方法,域名根据不同层次进行分类,举个例子,www.baidu.comcom是顶级域名,
baidu是二级域名,www是三级域名,通过"."将不同层级域名隔开。

如下图所示,常见层级域名,如国家顶级域名,.cn.uk,分别表示中国,英国,通过顶级域名,.com.gov则表示公司,政府,还有一种域名叫基础结构域名,arpa,仅有一个,反向域名。

域名服务器

域名服务器,主要四种类型,根域名服务器,顶级域名服务器,本地域名服务器,授权域名服务器,不同类型域名服务器管辖范围不同。

根域名服务器
根域名服务器,最高层次域名服务器,所有的根域名服务器都知道所有的顶级名服务器的IP地址,也是最重要的,不管哪个本地域名服务器,解析域名时,如果自己无法解析,都首先求助于根域名服务器,但根域名服务器不是直接把待查询的域名直接转IP,而是告诉本地域名服务器应该往哪个域名服务器查询。

顶级名服务器
该域名服务器管理在其注册的所有二级域名,收到DNS请求时,可能直接返回结果,也可能告诉下一步往哪个域名服务器查找。

授权名服务器
每台主机都必须在授权(权限)域名服务器登记,授权域名服务器总能将其管辖的主机名转为主机的IP地址。

本地名服务器
每个ISP都可以有本地域名服务器,当主机发出DNS查询请求时,请求报文就发送给主机的本地名服务器。

域名解析过程

域名解析是指把域名映射成Ip地址,或者反过来,前者为正向解析,反之为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。

域名解析有两种方式:递归查询递归与迭代相结合的查询。

递归查询的过程如下图所示,但该方法给根域名服务器造成的负载大,实际几乎不用:

递归与迭代查询的过程如上图所示。

当然为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器收到DNS查询结果时,该服务器就能够直接提供所要求的IP地址,而不需要向其他DNS服务器询问。另外,因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。

2.文件传输协议-FTP

文件传输协议(FileTrasferProtocol,FTP)是因特网上使用最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件类型及格式,并允许文件具有存取权限。

FTP提供以下功能:

  • 1)提供不同种类主机系统之间的文件传输能力
  • 2)以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
  • 3)以匿名FTP的方式提供公用文件共享的能力

FTP采用客户/服务器的工作方式,使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户提供服务,服务器进程由两大部分组成:一个主进程,负责接收新的请求,另外有若干的从属/子进程,负责处理单个请求,工作步骤如下:

  • 1)打开21端口,使客户进程能够连接上
  • 2)等待客户进程发连接请求
  • 3)启动从属进程处理客户进程发来的请求,主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止
  • 4)回到等待状态,继续接收其他客户进程的请求

FTP服务器必须在整个会话期间保留用户的状态信息,特别是服务器必须把指定的用户账户与控制连接联系起来,比如设置一个匿名账户,密码任意,服务器必须追踪用户在远程目录上的当前位置。

控制连接与数据连接

FTP在工作时,使用两个并行的TCP连接,如下图,一个是控制连接(端口21),一个是数据连接(端口20),使用两个不同的端口号可使协议更加简单和更容易实现。

控制连接
服务器监听21号端口,等待客户连接,建立在这个端口上的连接成为控制连接,控制连接用来传输控制信息,如连接请求、传送请求,且控制信息都以7位ascii格式传送。FTP客户发出传送请求,通过控制连接发给服务器端的控制进程,但控制连接不传送文件。在传输文件是还可以使用控制连接,中途发送其他命令,因此,控制连接在整个会话期间一直处于打开状态。

数据连接
服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建了“数据传送进程”和“数据连接”。数据连接用来连接客户端和服务器的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束执行。

因FTP使用一个分离的控制连接,所以也称FTP的控制信息是带外传送的。

3.电子邮件-SMTP/POP

电子邮件系统应具有三个最主要的组成构件:用户代理(User Agent),邮件服务器,电子邮件使用协议,SMTP/POP/IMAP。

用户代理-UA:用户与电子邮件系统的接口,用户代理使用户能通过友好接口发送/接收邮件,用户代理至少应具有撰写显示和邮件处理的功能,通常情况下,用户代理就是一个运行在PC上的程序,常见的有Outlook/Foxmail等。

邮件服务器:组成电子邮件系统的核心,功能是发送和接收邮件,同时还要向发信人报告邮件传送情况(已交付,被拒绝,丢失等),邮件服务器采用C/S方式工作,但它能同时充当客户和服务器,举个例子,当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,B是SMTP服务器,反之,当B向A发送邮件时,角色互换。

邮件协议:邮件发送协议用于用户代理向邮件服务器发送邮件或者在邮件服务器之间发送邮件,通常使用SMTP;邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3。SMPT采用的是push的通信方式,POP3采用的是pull的通信方式。
邮件发送和接收的过程可简化如下图:

下面介绍电子邮件的收发过程:

  • 1)发信人调用用户代理撰写和编辑发送的邮件,用户代理用SMTP把邮件传送给发送方邮件服务器
  • 2)发送方邮件服务器将邮件放入邮件缓存队列,等待发送
  • 3)运行在发送方邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,就向运行在接收方邮件服务器的SMTP服务器进程发起建立TCP连接
  • 4)TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件,当所有待发送邮件发完后,SMTP就关闭所建立的TCP连接
  • 5)运行在接收方邮件服务器中SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取
  • 6)收信人打算收信时,调用用户代理,使用POP3或者IMAP协议将自己的邮件从接收方邮件服务器的用户邮箱中取回

电子邮件格式与MIME

电子邮件分为信封和内容两部分,邮件内容分为首部和主体两部分,RFC 822规定邮件的首部格式,主体部分用户填写,邮件内容的首部有些关键字是必需的,最重要的是To:收件人和Subject:主题,其中Subject是可选关键字,另外From:是必填的,通常邮件系统自动填入。

MIME(multipurpose Internet Mail Extentions, MIME)
SMTP只能传送一定长度的ASCII码,许多非英语国家的文字,如中文,俄文等就无法传送,且无法传送可执行文件及二进制对象,因此提出MIME,多用途网络邮件扩充。MIME的意图是继续使用目前的格式,但增加了邮件主题的结构,并定义了传送非ASCII码的编码规则,MIME定义许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化,定义了传送编码,可对任何内容格式进行转换。SMTP与MIME的关系如下:

SMTP

简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。SMTP使用C/S模式,因此发送邮件的SMTP进程是SMTP客户,负责接收邮件的SMTP进程就是SMTP服务器,用TCP连接,端口号25,SMTP通信有以下的三个阶段:

  • 1)连接建立
  • 2)邮件传送
  • 3)连接释放

POP3

邮局协议(Post Office Protocol, POP)是一个简单但功能有限的邮件读取协议,现在使用的是其第三个版本POP3。POP3采用的是pull-拉的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,拉取用户邮箱中的邮件。
POP也使用客户/服务器的工作方式,在传输层使用TCP,端口号110,接收的用户代理必须运行POP客户程序,接收方的邮件服务器则运行POP服务器程序。POP有两种工作方式,下载并保留,下载并删除。

IMAP

IMAP也是一种邮件接收协议(Internet Message Access Protocol),较POP复杂,其为用户提供了创建文件夹,在不同文件夹之间移动邮件及在远程文件夹中查询邮件的命令,为此IMAP服务器维护了会话用户的状态信息。其另一特性是允许用户代理只获取报文的某些部分,如只读取一个报文的首部,这适用于低带宽的情况。

另外,随着现在互联网的流行,除了使用以上的客户代理外,很多如Hotmail/Gmail等,用户的浏览器与Hotmail/Gmail的邮件服务器之间的邮件发送或接收使用了**HTTP**,而仅在不同的邮件服务器之间传送邮件时才使用SMTP。

4.web应用

万维网(World Wide Web, www)是一个资料空间,这里一样有用的事物称为一样资源,并由一个全域统一资源定位符标识-URL。这些资源通过超文本传输协议(HyperText Transfer Protocol,HTTP)传给使用者,而后者通过单击链接来获取资源。万维网使用链接方法能让用户非常方便地从因特网的一个站点访问另一个站点,从而主动按需获取丰富信息,超文本标记语言(HyperText Markup Language, HTML)使得万维网页面设计者可以方便用一个超链接从本页面的某处链接到因特网的其他页面,并且能够显示这些页面。

万维网的内核部分由三个标准构成:统一资源定位符-URL,超文本传输协议-HTTP,超文本标记语言-HTML。

URL

URL是对可以从因特网上得到资源的位置和访问方法的一种简洁表示,URL相当于一个文件名在网络范围的扩展。

URL的一般形式:<协议>://😕。常见协议有http,https, ftp,端口和路径有时可以省略,在URL中不区分大小写。

HTTP

HTTP定义了浏览器(client进程)怎样向万维网服务器请求资源,以及服务器怎样把文档传给浏览器,从层次的角度看,HTTP是面向事物应用层协议,它规定了浏览器和服务器之间的请求和响应的格式与规则,是互联网能够可靠交换文件的重要基础。

HTTP的操作过程
从协议的执行过程来说,浏览器要访问www服务器时,首先要完成对www服务器的域名解析,一旦获得服务器的IP地址,浏览器就通过TCP向服务器发送连接建立请求。

万维网的大致工作过程如下图所示,网站站点有一个服务器进程,不断监听TCP的80端口(默认),当监听到连接请求后便与浏览器建立连接,TCP连接建立后,浏览器就向服务器发送请求获取某个web页面的HTTP请求。服务器收到HTTP请求后将构建所请求的web页面必需信息,通过HTTP响应返回给浏览器,浏览器再将信息进行解释,然后将web页面显示给用户,最后,TCP连接释放。

HTTP有两类报文:请求报文和响应报文。

HTTP的特点
HTTP是无状态的,也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次访问时相同。这种无状态的特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求,在实际应用中,比如会使用cookie/session/token+数据库方式来追踪用户的活动。

HTTP采用TCP作为运输层的协议,保证了数据的可靠传输,其本身是无连接的,通信的双方在交换HTTP报文之前不需要建立HTTP连接。

HTTP既可以是非持久连接,也可以是持久连接(HTTP/1.1)。对于非持久连接,每个网页元素如jpeg,flash等,其传输都需要单独建立一个TCP连接,如下图所示。

而持久连接,是指服务器发送响应后仍然保持这条连接,使同一个客户与服务器可以持续在这条连接上传送后续的HTTP请求与响应报文,如下图所示的持久连接-非流水线方式。

持久连接分为非流水线和流水线方式,对于非流水线,客户在收到前一个响应后才能发出下一个请求,HTTP/1.1默认方式是使用流水线的持久连接,这种情况下,客户每遇到一个对象引用就立即发出一个请求,因为呵护可以做个连续发出对哥哥引用对象的请求,如果所有的请求和响应都是连续发送的,name所有引用的对象共计经历1个RTT延迟,而不是像非流水线方式,每个应用都必须有1个RTT延迟。

HTTP报文结构
HTTP是面向文本的,因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的,有两类报文:

  • 请求报文:client >>> server
  • 响应报文:server >>> client

题外话

在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。


Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。

​ 最后

为了帮助大家更好的学习Python,小编给大家准备了一份Python学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,需要获取方式:点击这里【 Python全套资料】 即可获取。

CSDN大礼包:《Python开发全套学习笔记/实战项目/安装工具》免费分享

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。


​👉Python必备开发工具👈


👉精品Python学习书籍👈

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

温馨提示:篇幅有限,已打包文件夹,获取方式:点击这里【 Python全套资料】 即可获取。

CSDN大礼包:《Python开发全套学习笔记/实战项目/安装工具》免费分享

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

​​​👉100道Python练习题👈


👉面试刷题👈


​​​
👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉Python副业兼职与全职路线👈
在这里插入图片描述

​​​获取方式:点击这里【 Python全套资料】 或扫描下方即可获取。

CSDN大礼包:《Python开发全套学习笔记/实战项目/安装工具》免费分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/51400.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT进军网络安全,安全从业者是否会被取代?

在ChatGPT爆火之后&#xff0c;微软宣布推出基于ChatGPT的“安全副驾驶”产品&#xff0c;宣称将“帮助防御者以机器的速度和规模进行端到端防御。 网络安全是人工智能最大的细分市场&#xff0c;而ChatGPT又是引领当下人工智能技术革命的“核弹级产品”&#xff0c;在网络安全…

产品经理为什么比程序员工资要高?百度员工:因为他是产品灵魂

程序员和产品经理关系堪称是渊源颇深了&#xff0c;网络上关于他俩关系的段子更是层穷不出&#xff0c;这不&#xff0c;有程序员抱怨道&#xff1a;产品经理为什么比程序员工资普遍要高&#xff1f; 在某平台上&#xff0c;有实名的百度员工回应道&#xff1a;因为产品经理才是…

程序员吐槽:凭什么产品经理工资比我高?网友评论炸了!

在我们 IT 界&#xff0c;程序员和产品经理简直就是一对冤家。在工作上天天互怼&#xff0c;互相不服气。其实导致这种现象出现的原因就是&#xff1a;产品经理把程序员当民工&#xff0c;程序员把产品经理当 SB&#xff0c;其实是互相不了解罢了。小编c学习群825414254获取c一…

在北京做产品经理3年可以拿到多少薪资

在目前来看&#xff0c;人才市场什么岗位比较热呢?毫无疑问&#xff0c;那就是产品经理这个岗位。这就要说说&#xff0c;产品经理跟其他的岗位相比有什么优势呢?今天周老师和大家说道说道。 产品经理的优势   第一点&#xff0c;最突出的优势就表现在薪资方面&#xff0c;…

什么是:产品专员、产品经理、产品总监、产品副总?

在互联网产品管理职位结构中大致分为&#xff1a;产品专员-----》产品经理-----》产品总监-----》产品副总&#xff08;由低到高&#xff09;。 在目前很多的小公司里基本将众多产品职能角色汇集成一个&#xff1a;产品经理&#xff08;当然&#xff0c;甚至在有些公司老板就是…

程序员和产品经理的关系

目录 和谐团队必备要素我所期待的PM做一个合格的程序总结 正文 上周&#xff0c;又看见有程序和PM&#xff08;产品经理&#xff09;吵了起来&#xff0c;大致是因为晚上就要上线了&#xff0c;下午的时候PM来说要改点需求&#xff0c;但程序不愿意。兴许是天气热了&#xff…

产品经理与研发经理的分工

最近在翻看《程序员》杂志的时候看到的一篇文章&#xff1a;被《偷走的童话结局-对营销和研发分工的考核》。中间反应的问题感觉和现在的工作息息相关&#xff0c;整理下来供思考。 一、如何进行职责的划分&#xff1f; 产品经理和研发经理是一个研发团队的重要组成部分&…

从销售转行产品经理,如何拿到18K的薪资?

从K12行业的销售&#xff0c;转为其他行业的销售&#xff0c;我的生活没有一点起色&#xff0c;还让我停滞不前…… 文 | 学员投稿 学科 | 产品经理 校区 | 上海 薪资 | 18k 大家好&#xff0c;我是上海黑马产品经理21期学员&#xff0c;由于性格大大咧咧&#xff0c;同班同学都…

NPDP|程序员转产品经理好转吗?

经常看到有程序员小哥工作几年因为压力大想转行&#xff0c;这种情况确实是存在的。整日泡在无穷无尽的代码中&#xff0c;确实是一件很枯燥的事情。这可能不仅仅是工作量方面的压力&#xff0c;更多的是做到一定程度后&#xff0c;对这个工作不够感兴趣&#xff0c;需要找到更…

月薪6万的腾讯产品经理是什么水平?

如果有人问&#xff1a;2021年最有“钱”途的岗位是什么&#xff1f;B端产品经理一定榜上有名。 2021年起&#xff0c;B端产品需求放大已成为不可逆的趋势。 此前&#xff0c;阿里巴巴率先投身到关注B端商家的新零售洪流中&#xff0c;腾讯也将云端赋能和服务独立成立一个全新的…

数据产品经理真的比数据分析工资高吗?

大家好,我是暴躁大黄。7年产品经理经验,其中4年从事数据产品经理。 在我并不漫长的职业生涯中,和数据分析师聊天的过程里被问得最多的问题就是——数据产品经理到底干嘛的?为什么好像比我们数据分析师工资高?我能转型数据产品经理吗? 那么今天我们就聊聊这些事: 1. 从…

互联网行业产品经理(PM)的月薪一般是多少?

作者&#xff1a;曦扬 链接&#xff1a;https://www.zhihu.com/question/19897792/answer/972310143 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 你可能看过很多薪酬报告 北京产品经理月均薪资2w&#xff0c;校招…

2020产品经理薪资大起底

昨天在社群里发了一波问卷调查&#xff0c;匿名调研产品人的真实薪资。 问卷总共有5个题目&#xff1a; 1、您的岗位是什么&#xff1f; 2、您工作所在的城市是哪&#xff1f; 3、您的工作年限是多少&#xff1f; 4、您所从事的行业是什么&#xff1f; 5、您当前税前年薪是多少…

为什么产品经理的工资不能比程序员高?

作者&#xff1a;非著名程序员 在我们 IT 界&#xff0c;程序员和产品经理简直就是一对冤家。在工作上天天互怼&#xff0c;互相不服气。其实导致这种现象出现的原因就是&#xff1a;产品经理把程序员当民工&#xff0c;程序员把产品经理当 SB&#xff0c;其实是互相不了解罢了…

艺术家已经失业,下一个会是谁?

这几年人工智能有了突破性的进展&#xff0c;相信大家自己平时看新闻刷短视频也有所了解。ChatGPT&#xff0c;AI绘画&#xff0c;两个火出圈的产品。一个可以正常与人交流&#xff0c;写文章&#xff0c;写代码的AI&#xff0c; 一个绘画技术炉火纯青的AI画师&#xff0c;现在…

23.5.16 使用pandas处理数据表格

目录 1、快速查看dataframe数据信息 2、对dataframe数据进行操作 1、删除指定行或列 2.删除含空值&#xff08;缺失值&#xff09;的行或列 3、dataframe数据切片、分组 4、dataframe数据保存为excel文件 一个dataframe数据保存到一个excel文件的一个表中&#xff1a; …

chatgpt如何引入领域知识?mit团队利用gpt4做数据增强来提升小模型在特定领域的效果

一、概述 title&#xff1a;Dr. LLaMA: Improving Small Language Models in Domain-Specific QA via Generative Data Augmentation 论文地址&#xff1a;Paper page - Dr. LLaMA: Improving Small Language Models in Domain-Specific QA via Generative Data Augmentation…

突发:深度学习之父Hinton为了警告AI的风险,不惜从谷歌离职!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 今天&#xff0c;AI领域发生了一件标志性事件。那就是Hinton 为了能更自由的表达对AI失控的担忧&#xff0c;不惜从工作了10年的谷歌离职&#xff0c;可见他真的深切的感受到了危机。 不久前&#xff0c;纽约时报的一篇采访…

炸裂!AI 都快把《西部世界》搞出来了!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; 自 ChatGPT 发布以来&#xff0c;在 AI 界可谓是掀起了一场前所未有的人工智能探索浪潮。 人们争先恐后的进入这个领域&#xff0c;试图挖掘出 AI 在当前科技水平能发挥的最大潜力。 前两天…

03.提问是成长的第一步-《ChatGPT提问艺术与技术》

第一章 学习提问的艺术 1.2 提问是成长的第一步 在⼈们的思想⾥&#xff0c;最想要的东西往往是可望⽽不可即的。追求的东西越是美好&#xff0c;越是吸引⼈&#xff0c;追求的⼈就会越多。这看似⽆理&#xff0c;却是⽣活的事实。对于人类社会来说&#xff0c;个体的成长是智人…