【计算机网络】应用层知识要点

这是一份比较私人的应用层个人体会,看官如果拿这个来当做学习资料可能会感到太散。

1、应用层协议
针对解决不同主机中的多个应用进程之间的通信和协同工作。总的来说,就是在两个主机之间进行信息交互。因此,所有的应用层协议都遵循一定的规则:1、传输的报文类型;2、报文中的各个字段的含义;3、字段对应信息的含义;4、调度这些报文发送的规则。

2、 DNS
将主机的 ip地址转换为方便记忆的主机名,但是,一个ip地址可以对应多个域名,而一个域名只能对应一个ip地址。所以,这样看起来,请求方必须指明要请求ip地址中的哪一个域名。
域名的命名规则:1、多级标号,每个不超过63字符;2、大小写不分;3、域名总长度不超过 255。

每次访问一个域名,都需要通过DNS服务器解析域名对应的 ip 地址,这样,tcp/ip协议才开始工作。现在大多数的 网络都是 专用网,所以的话,ip地址都固定在了路由器上,从路由器开始,接入互联网。因此,我们的第一级 DNS 放在了路由器上。

递归查询:若路由器根据自己的 DNS 服务器无法解析域名,那么这个 DNS 服务器就向上一级 DNS 服务器做请求。如果上级还没有,就再向上级DNS请求,直到根域名服务器。整个过程采用的 任播技术,直接寻找相邻跳数最近的上级服务器。

迭代查询:根域名服务器告诉本地 DNS,你下次查询去哪里查。

两个查询方式的区别就是,递归查询是好人帮忙帮到底,亲自上手;迭代查询是指导一下方法,做不做全看你自己(本地DNS当然会去做)。这样总结下来,其实工作就是本地的DNS在做,本地的主机享受了服务,得到一个 ip地址而已。

提高查询效率的方法就是缓存,原因是服务器方的 ip地址到 域名的映射,并不经常改变。

3、 FTP协议
FTP 的目的是克服计算机存储数据格式不同,文件目录和命名规则不同,不同操作系统使用的命令不同,访问控制方法不同设计的文件传输协议。ftp面向文件传输,常用浏览器支持 ftp协议。

FTP 的服务器有两类进程,一个调度进程,当收到 ftp请求的时候,就安排一个 工作进程去处理 ftp请求。也就是支持多进程。

而工作进程在处理一个客户请求时,分别有一个控制进程和一个数据传输进程,各使用一个端口号。名为带外传输。

TFTP协议相当于是没有控制进程的ftp协议,直接将数据传给要传的主机。可用于 UDP环境,不需要传输太多控制信息。

4、TELNET协议

远程终端协议,计算机上附件里貌似有这个东西,可以使用自己的显示器,点击操作远程连接的电脑,有像素限制。
QQ里也有这种工具,更高级一些,解决了 VPN 中的本地ip地址的识别问题。但是由于现在的网速是比较感人的,尤其是跨多个路由器的话,那个使用效果的确是……

5、HTTP协议

1、www:万维网简称,分布式超媒体系统。URL标记这个大系统中的资源位置,HTTP进行资源传输,HTML用以显示页面,搜索引擎提供寻找资源的方法
2、url的语法:协议名://主机域名或ip地址:端口/资源的路径?参数1=值1#参数2=值2
3、作为服务器,要时刻监听80端口,一旦有访问,就建立一条tcp链接,在此基础上传输http协议的数据。解析协议数据,获取访问的 html文档。由于采用了 tcp请求,就有一个请求和确认,收到确认的过程。http协议中,同样有一个请求链接时间,一个传输报文的时间。我们会设置一个超时最大的值,超过即放弃请求。

流水线传输数据要比非流水线快的多,因为没有阻塞,阻塞点在客户端。在没有收到确认的情况下就发到下一步了。

4、代理服务器:即高速缓存,解决了路由器ip地址被自己的客户机使用崩溃的问题。

5、HTTP请求报文中的请求方法:get,读取信息;POST,给服务器添加信息;option,请求一些选项的信息;head,请求html页面里的 headers标签;put,在指定的url下存一些文档;DELETE:删除url对应的文件;connect:用于代理服务器;trace:环回测试的请求报文。广大老百姓使用的最多的是 get 和post。其他的方法,我们没有权限。

6、看来 Cookie是个服务器跟踪客户的工具,阻止所有Cookie和DNT标签的含义应该差不多吧。相关联的。

7、动态文档:静态文档就不说了,html即静态,css是渲染。动态文档是指在客户端请求到服务器时,服务器首先安排一个应用程序处理客户端的请求数据,并把处理后的数据封装成http报文里面,传输给客户端。这样,主要是有一些数据是实时可变的,不可能将数据放在静态的html里面,那样讲无法同步更新。但是这种动态指的是每次刷新都获取当前值,而不刷新的话,数据不会自己变化呈现。

所以,在这里有一个 cgi的概念,所有设计的应用程序都必须满足 cgi 标准,这样的应用程序都是 cgi 程序。之所以叫网关,是因为这个程序很可能要调用数据库之类的资源。一般cgi脚本都放在/cgi-bin文件夹下。

8、活动web文档:

服务器推送:在这种情况下,服务器和客户端之间建立http长链接,服务器不断地 把数据推送给客户端。动画呈现,时间更新等等。太占带宽,链接不断,占用服务器资源,端口,带宽,时间资源。
活动文档:服务器直接把一个活动的程序,脚本之类的返回给客户端,其实链接已经断开了,但是程序运行呈现在页面上,看起来是连续不断的数据。视频缓存就是这个道理吧。

9、搜索技术:

全文搜索引擎:爬虫爬回数据,所以,百度搜索出来的结果中的链接标题,其实就是爬取的网页的title标签中的文字。
分类搜索:不用爬虫爬,只是返回一些url。
垂直搜索:特定领域搜索。
元搜索:对各个搜索引擎的封装,信息的汇总,所以更牛逼一些。

需要了解一下 Google 和 百度的搜索引擎算法,一是如何用爬虫爬回数据,而是计算网页重要性排名。真的是觉得数学是个好东西啊!回头翻翻矩阵理论。

10、加密技术,https:http明文在网上传播不安全,对于有安全需求的消息,服务器和客户端之间首先建立连接,之后,服务器给客户端提供一个加密算法,一把秘钥,客户端程序使用算法和秘钥对数据加密,传输给服务器,服务器再用另一把不同的秘钥将数据解密出来。感觉好爽,这是网络安全中的密码算法吧,接触到数学感觉好开心,好有安全感。

6、SMTP协议

用户代理:电子邮件的客户端软件,和http协议里的用户代理概念相近。
用户代理将邮件发送给邮件服务器,邮件服务器发送给接收方的邮件服务器,然后接收方的用户代理,使用 POP3 协议读取其中的信息。使用的是 tcp 链接。且:邮件不会在中转的某个邮件服务器停留落地。

这个协议模型中,邮件服务器的程序功能不能让PC来做,因为,email的性质决定了,邮件的发送和接收一定是不同时的,而tcp链接则必须要求同时在线,这样,就必须通过一个24小时在线的服务器来处理这个业务。
但是允许一种情况,即从PC直接发送邮件到接收方的邮件服务器,而这种情况下,往往带有恶意,病毒。但也是foxmail实现特快专递服务的一个措施。
POP3有局限性,而IMAP网际报文存取协议则强大灵活的多,现在很多的浏览器邮箱采用的读取协议很多都是HTTP。

有客户端程序的邮箱应该都是IMAP协议。
MIME是在SMAP协议缺点基础上的改进。

7、DHCP协议

计算机联网前的网络配置,自动添加ip地址,子网掩码,默认路由器ip,DNS的ip地址,不用人工手动添加。
DHCP对运行客户软件和服务器软件的主机都有不同的适用策略。
主机接入互联网的一刻起,就向网络中发送全1 的ip地址消息,由于自己没有ip地址,所以,这个消息的源ip地址为全0,这一点和计算机ip地址的概念是一致的,如果服务(比如docker之类的,虚拟机等等)没有指定端口映射的ip地址,默认为宿主机本身,即0.0.0.0。

一般来讲,路由器上集成的协议是 DHCP的中继代理,其再寻找 DHCP 服务器 的时候采用UDP协议。但是,专用网的 ip地址是如何分配的呢?道理应该也是一样的,DHCP服务器记录专用网中的ip地址分配。

如果 ip撞车的话,说明前一个IP地址的租用期到期了,DHCP服务器中并没有该ip地址的记录,然而ip被实际固定占用了下来,造成了一定的问题。

8、SNMP协议

网管协议,似乎只有在学校念书的时候才接触过,网管中心会监督大家的上网有没有搞些网络破坏,监督带宽有没有被占用等等。听说南开大学以前,有流量监督,每月流量不能超过4g,真的是……还是我母校好。

9、应用进程与OS的交互

这块是网络编程需要深刻理解的地方。java 和 python 里的套接字。

应用程序——>系统调用的接口——>OS——>OS内部过程——>OS——>系统调用接口——>应用进程程序。

套接字是 传输层 tcp/ip协议和应用进程之间的接口。创建套接字意味着请求OS给其安排一定的内存,外存,CPU时间,带宽等等。这些都有OS统一调度。OS安排好后,用套接字descriptor交给应用进程,进程就可以使用了。

进程在接收到套接字descriptor后,用bind来绑定到一个本地的ip地址和端口号。已经连上了 tcp/ip的一端。然后将套接字设置为被动收听listen 模式。

服务器使用 accept方式将客户端的请求接收下来,这是并发多进程的。且主服务器进程还要链接多个从属服务器的进程。,都要建立套接字,但是从属的是不分配端口的吧。

在建立链接后,使用 send 和recv 系统调用接收数据。

传输完数据后,close 释放套接字资源。

以上的 英文都是系统调用的方法,各种主流编程语言中都有封装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值