/**

本篇博客由汗青ZJF整理并发布, 转载请注明出处:

http://blog.csdn.net/zjf280441589/article/category/1854365

*/

TCP/IP中的应用层


DNS简介

域名系统是基于描述名字-地址映射的分布式计算机系统的实现,其作用是提供主机名和IP 地址间的映射关系。

名字到IP地址的解析是由若干个域名Server组成的, 域名Server程序在专设的结点上运行, 运行这些程序的机器成为域名服务器(Domain Server);

1)层次域名空间

Internet采用了层次树状结构的命名方法, 任何一个连接在因特网上的主机或路由器都有一个唯一的层次结构的名字, 即域名;

域名的结构由标号序列组成, 各标号之间用点分隔开:

… . 三级域名 . 二级域名 . 顶级域名

各标号分别代表不同级别的域名;

域名只是个逻辑概念, 并不代表计算机的物理位置, 变长的域名和使用有助于记忆的字符串来便于人们使用. 而IP地址是定长的32位二进制数字则非常便于计算机处理;

2)域名服务器


负责域名到IP地址的解析。使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。

域名服务器的四种类型

1)根域名服务器: 最高层次的域名服务器。记录着所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。在因特网上共有13组根域名服务器;

2)顶级域名服务器: 负责管理在该顶级域名服务器注册的所有二级域名。当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。

3)权限域名服务器: 是负责一个区域的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器。

4)本地域名服务器: 当一个主机发出 DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。

3)域名的解析过程 

(1)客户应用程序调用客户端一个称为解析器的库函数,将目的主机的域名作为参数传给解析器;

(2)解析器通过网络向本地域名服务器53号端口发送一个以UDP数据报封装的 DNS 请求报文,询问与该域名对应的IP地址;

(3)本地域名服务器查找自己的域名数据库(映射文件),将域名对应的IP地址组成一个以 UDP 数据报封装的 DNS 响应报文,返回给解析器;若在本地域名数据库中查不到,则此域名服务器就暂时成为全球 DNS 中的一个客户,并向其它域名服务器发出查询请求,直至找到能回答请求的域名服务器为止,并将解析结果响应给本地域名服务器;本地域名服务器再将解析结果返回给客户端解析器;

(4)客户端解析器最终收到响应报文后,再将解析得到的IP地址返回给应用程序。

三种查询方式:

1)迭代查询


2)递归查询(少用)

3)递归与迭代相结合(常用)


4)域名高速缓存

每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。

为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项。当权限域名服务器回答一个查询请求时,在响应报文中都指明绑定有效存在的时间值。

FTP

FTP(File Transfer Protocol,文件传输协议)使用客户/服务器模式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,每个从属进程负责为一个客户进行FTP服务。

FTP 使用两条TCP连接来完成文件传输,一条是控制连接,另一条是数据连接。平时控制链接总在端口21等待客户的连接请求,当用户需要传输文件时,客户首先主动与服务器端口21建立一个控制连接,用来传送客户的命令和服务器的应答。客户还会告知服务器自己将用的数据端口号, 控制链接会一直保持到客户与服务器FTP全部通信结束为止。

当客户发出文件下载、文件上传、列目录的数据传输请求时,服务器端口20主动与客户端告知的数据端口建立数据连接,并在其上传输数据,在该次数据传输完毕后立即关闭数据传输连接。

使用两个连接一方面使协议更加简单和更容易实现;另一方面在传输文件时还可以同时利用控制连接与服务器进行交互(如客户发送请求终止文件传输)。

关于FTP服务器的详细配置信息,请参考我的博客

http://blog.csdn.net/zjf280441589/article/details/18868343

TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议)也是用于在远端服务器和本地主机之间传输文件的,相对于FTP,TFTP没有复杂的交互存取接口和认证控制,适用于客户端和服务器之间不需要复杂交互的环境。TFTP协议的运行基于UDP协议,使用UDP端口69进行数据传输。

FTP与TFTP的不同

传输协议不同

FTP是基于TCP, TFTP是基于UDP

端口号不同

FTP是用21,20, TFTP是69

速度和安全

FTP在速度慢但安全性好, TFTP速度快但是安全性不如FTP高

WWW/万维网

WWW以客户/服务器方式工作。使用端口80. 浏览器就是在用户计算机上的WWW客户程序。WWW文档所驻留的计算机则运行服务器程序,也称为WWW服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的WWW文档。

在万维网客户程序与万维网服务器程序之间进行交互所使用的协议是超文本传送协议 HTTP (Hyper Text Transfer Protocol), HTTP使用TCP 连接进行可靠的传送。HTTP 是面向事务的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

WWW使用统一资源定位符 URL (Uniform Resource Locator)来标志万维网上的各种文档,使每一个文档在整个因特网的范围内具有唯一的标识符 URL。URL的一般格式

<协议>://<主机>:<端口号>/<路径>

超文本标记语言 HTML (Hyper Text Markup Language)使得万维网页面的设计者可以很方便地用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。

万维网的工作过程:

<设 URL 为 http://www.tmtpost.com/99682.html>用户点击鼠标后所发生的事件:

(1) 浏览器分析超链指向页面的 URL。

(2) 浏览器向 DNS 请求解析 www.tmtpost.com 的 IP 地址。

(3) 域名系统 DNS 解析出钛媒体服务器的 IP 地址。

(4) 浏览器与服务器建立 TCP 连接

(5) 浏览器发出取文件命令:  GET /99682.html

(6) 服务器给出响应,把文件 99682.html 发给浏览器。

(7) TCP 连接释放。

(8) 浏览器显示钛媒体相关网页文件 99682.html 中的所有文本。

HTTP主要特点

HTTP是面向事务的客户服务器协议。

HTTP 协议是无状态的(stateless),即不需要记忆交互的当前状态,因为过程简单。

HTTP 1.0协议是非持续连接。建立TCP连接后,一个HTTP请求过去,一个HTTP响应过来,然后就断开TCP连接。

HTTP 使用了面向连接的 TCP 向上提供的服务。但 HTTP 协议本身是无连接的。

持续连接

不同于HTTP/1.0,HTTP/1.1 协议使用持续连接。

万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。而且这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。

目前一些流行的浏览器(如IE 6.0)的默认设置就是使用 HTTP/1.1。

持续连接的两种工作方式

非流水线方式:客户在收到前一个响应后才能发出下一个请求。虽然这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间,但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。

流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率

HTTP请求报文格式

所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。而且,请求报文的类型是由它所采用的方法决定的。

HTTP响应报文格式

响应报文的开始行是状态行, 状态行包括三项内容,即 HTTP 的版本,状态码,以及解释状态码的简单短语.

注: 本系列博客的打包下载地址:http://download.csdn.net/download/hanqing280441589/8574157

TCP/IP入门(4) --应用层的更多相关文章

  1. TCP/IP入门(2) --网络层

    /** 本篇博客由 126(127不可用) 2^24 -2 B 2^14 -1 128.1 191.255 2^16 -2 C 2^21 -1 192.0.1 223.255.255 2^8 -2 D ...

  2. TCP/IP入门(1) --链路层

    /** 本博客由汗青ZJF整理并发布, 转载请注明出处: http://blog.csdn.net/zjf280441589/article/category/1854365 */ TCP/IP体系结 ...

  3. TCP/IP笔记(八)应用层协议

    TCP/IP的应用层涵盖了OSI参考模型中第5.第6.第7层的所有功能,不仅包含了管理通信连接的会话层功能.转换数据格式的标识层功能,还包括与对端主机交互的应用层功能在内的所有功能. 利用网络的应用程 ...

  4. 《TCP/IP入门经典》摘录--Part 1

    TCP/IP基础知识 什么是TCP/IP Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议, ...

  5. 《TCP/IP入门经典》摘录--Part 3

    TCP/IP协议系统 3.子网划分和CIDR 子网 划分网络 为什么需要划分子网? 子网划分就是在网络 ID 之下提供了第 2 层逻辑组织.路由器能够把数据报发送给网络里的某个子网地址(一般对应于一个 ...

  6. 《TCP/IP入门经典》摘录--Part 2

    TCP/IP协议系统 1.网络访问层 网卡(network adapter),即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,由 ...

  7. TCP/IP参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/104597450 学习课程:<2019王道考研计算机网络> 学习目的 ...

  8. TCP/IP入门(3) --传输层

    原文:http://blog.csdn.net/zjf280441589/article/category/1854365 传输层的主要功能 1)传输层为应用进程之间提供端到端的逻辑通信(网络层是为主 ...

  9. TCP/IP入门学习(2)---OSI分层

    一.会话层以上的处理 1.表示层 将数据从主机特有的格式转换为网络标准传输格式.以此使得不同环境之间的通信成为可能. 2.会话层 即决定使用哪个连接或者哪种连接方式将数据发送出去.会话层也会在数首部添 ...

随机推荐

  1. js 在iframe子页面获取父页面元素,或在父页面 获取iframe子页面的元素的几种方式

    用JS或jquery访问页面内的iframe,兼容IE/FF 注意:框架内的页面是不能跨域的! 假设有两个页面,在相同域下. index.html 文件内含有一个iframe: XML/HTML代码 ...

  2. react 踩的坑

    1.如上图所示:没有任何语法错误,可是只要加上</button>闭合标签后就乱套了 解决方案:sublimetext view-syntax-babel-javascript(babel) ...

  3. Vue.js + Webpack

    vue.js Vue.js是一个构建数据驱动的 web 界面的库.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件 以上是Vue.js官方定义,故名思议,以数据驱动视 ...

  4. 使用foreach需要判空。

    今天写代码的时候,需要遍历一个作为参数传递进来的容器, 当时顺手就加上了判空条件: if(null==list)return; 后来就像,不知道遍历(foreach)有没有帮我做这个工作: 下面看实验 ...

  5. logback 三

    一.LoggerFactory.gerLogger()使用: private Logger vitalLogger= LoggerFactory.getLogger("vitalReques ...

  6. ES6(es2015)新增实用方法汇总

    Array 1.map() [1,2,3,4].map(function(item, index, array){ return  item * 2; }) 对数组中的每一项执行一次回调函数,三个参数 ...

  7. ucsc 文件格式说明

    链接附带的是ucsc各种格式文件的说明,以后遇到新类型的文件可以先来这里看看! https://www.genome.ucsc.edu/FAQ/FAQformat.html

  8. Python File(文件) 方法

    file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 序号 方法及描述 1 file.close() 关闭文件.关闭后文件不能再进行读写操作. 2 file.flush() ...

  9. Core Python Programming一书中关于深浅拷贝的错误

    该书关于深浅拷贝的论述: 6.20. *Copying Python Objects and Shallow and Deep Copies "when shallow copies are ...

  10. Linux动态频率调节系统CPUFreq之三:governor

    在上一篇文章中,介绍了cpufreq的core层,core提供了cpufreq系统的初始化,公共数据结构的建立以及对cpufreq中其它子部件提供注册功能.core的最核心功能是对policy的管理, ...