TCP/IP入门(4) --应用层
/**
本篇博客由汗青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) --应用层的更多相关文章
- 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 ...
- TCP/IP入门(1) --链路层
/** 本博客由汗青ZJF整理并发布, 转载请注明出处: http://blog.csdn.net/zjf280441589/article/category/1854365 */ TCP/IP体系结 ...
- TCP/IP笔记(八)应用层协议
TCP/IP的应用层涵盖了OSI参考模型中第5.第6.第7层的所有功能,不仅包含了管理通信连接的会话层功能.转换数据格式的标识层功能,还包括与对端主机交互的应用层功能在内的所有功能. 利用网络的应用程 ...
- 《TCP/IP入门经典》摘录--Part 1
TCP/IP基础知识 什么是TCP/IP Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议, ...
- 《TCP/IP入门经典》摘录--Part 3
TCP/IP协议系统 3.子网划分和CIDR 子网 划分网络 为什么需要划分子网? 子网划分就是在网络 ID 之下提供了第 2 层逻辑组织.路由器能够把数据报发送给网络里的某个子网地址(一般对应于一个 ...
- 《TCP/IP入门经典》摘录--Part 2
TCP/IP协议系统 1.网络访问层 网卡(network adapter),即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,由 ...
- TCP/IP参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较
文章转自:https://blog.csdn.net/weixin_43914604/article/details/104597450 学习课程:<2019王道考研计算机网络> 学习目的 ...
- TCP/IP入门(3) --传输层
原文:http://blog.csdn.net/zjf280441589/article/category/1854365 传输层的主要功能 1)传输层为应用进程之间提供端到端的逻辑通信(网络层是为主 ...
- TCP/IP入门学习(2)---OSI分层
一.会话层以上的处理 1.表示层 将数据从主机特有的格式转换为网络标准传输格式.以此使得不同环境之间的通信成为可能. 2.会话层 即决定使用哪个连接或者哪种连接方式将数据发送出去.会话层也会在数首部添 ...
随机推荐
- avalon,xmp
- jquery datagrid添加冻结列等
frozenColumns:[[ { field: 'xh', checkbox: true }, { field: "CZ", title: "操作", wi ...
- KMP算法小结
最近看了一些关于KMP算法的资料,在此写一篇博客总计一下. 1.KMP算法介绍 KMP算法是一种字符串搜索的改进算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称 ...
- tf.nn.conv2d 和 tf.nn.max_pool 中 padding 分别为 'VALID' 和 'SAME' 的直觉上的经验和测试代码
这个地方一开始是迷糊的,写代码做比较分析,总结出直觉上的经验. 某人若想看精准的解释,移步这个网址(http://blog.csdn.net/fireflychh/article/details/73 ...
- Java8 按照类属性去重
测试po package com.shiwulian.test.po; public class Person {private String id;private String name;priva ...
- 剑指架构师系列-Nginx的安装与使用
Nginx可以干许多事情,在这里我们主要使用Nginx的反向代理与负载均衡功能. 1.Nginx的下载安装 在安装Nginx前需要安装如下软件: GCC Nginx是C写的,需要用GCC编译 PCR ...
- Vue2.0搭建脚手架流程
介绍 Vue.js是一套构建用户界面的渐进式框架.Vue 只关注视图层,采用自底向上增量开发的设计.Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. 安装node.js ...
- 介绍Docker仓库
仓库(Repository)是集中存放镜像的地方. 一个容易混淆的概念是注册服务器(Registry).实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像.从 ...
- 拟将博客迁移到github
其实博客园网站速度挺快的, 但是markdown的显示没有github美观. 尤其是代码高亮这一块. 近日发现github pages + vue + github api + stackedit 能 ...
- Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义
http://hi.baidu.com/lolorosa/blog/item/5775a608bd670d33b0351da7.html $# 是传给脚本的参数个数 $@ 是传给脚本的所有参数的列表 ...