实验:应用层协议 学习笔记

应用层协议

在传输层之上,便是应用层。传输层的UDP报文和TCP报文段的数据部分就是应用层交付的数据。

不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等协议都是用于解决其各自的一类问题。

本节实验,介绍DNS、FTP、HTTP三个常用的应用层协议。

一、DNS

DNS (Domain Name Service 域名服务) 协议基于UDP,使用端口号53。

由数字组成的IP地址很难记忆,所以我们上网使用网站IP地址的别名——域名。实际使用中,域名与IP地址是对应的,这种对应关系保存在DNS服务器之中。

在浏览器中输入一个域名后,会有DNS服务器将域名解析为对应的IP地址。注意这和网络层的ARP协议的不同之处:DNS提供的是域名与IP地址的对应关系,而ARP提供的是IP地址和MAC地址的对应关系。

DNS服务器

DNS服务器是个分层次的系统:

  • (1)根DNS服务器 :全世界共有13台根域名服务器,编号A到M,其中大部分位于美国。
  • (2)顶级(TLD)DNS服务器 :负责如 com 、org 、edu 等顶级域名和所有国家的顶级域名(如 cn 、uk 、jp )。
  • (3)权威DNS服务器 :大型组织、大学、企业的域名解析服务。
  • (4)本地DNS服务器 :通常与我们主机最近的DNS服务器。

而域名解析的过程,有迭代查询和递归查询两种方式:

host命令

在linux系统中,可以用 host命令 进行DNS查询,查看一个指定域名的IP,比如要查询实验楼的IP地址:

host www.shiyanlou.com

DNS报文

主机向DNS服务器发出的查询叫做DNS报文,大致结构:

DNS问答报文的内容,都是IP和域名的对应信息,关于DNS首部和内容 各字段这里不做详细介绍。深入了解,可以先host一个域名,再使用tcpdump抓取报文并解读。

DNS缓存和hosts文件

刚才DNS解析查询过程的图中,共发出了8份DNS报文,这是非常消耗时间的,所以实际应用上使用 DNS缓存 :当一个DNS服务器接收到一个DNS回答后,会将其信息缓存一段时间,当再有一个对相同域名的查询时,便可直接回复。

通过DNS缓存,其实很多查询都只需要本地DNS服务器便可完成。

有“FQ”爱好的同学应该知道hosts文件,其实hosts文件可以看作是一个小型的DNS服务器。

使用命令打开hosts文件:

sudo gedit /etc/hosts

查看文件内容,可以发现里面全是IP和域名的对应记录:

在实际上网过程中,域名解析的的优先顺序是:先在DNS缓存查询,若没有找到记录,再查询hosts文件,若还是没找到记录,再向DNS服务器发出DNS查询报文。

二、FTP

FTP (File Transfer Protocol 文件传输协议) 基于TCP,使用端口号20(数据)和21(控制)。

它的主要功能是减少或消除在不同操作系统下处理文件的不兼容性,以达到便捷高效的文件传输效果。

  • FTP只提供文件传输的基本服务,它采用 客户端—服务器 的方式,一个FTP服务器可同时为多个客户端提供服务。
  • 在进行文件传输时,FTP的客户端和服务器之间会建立两个TCP连接:21号端口建立控制连接,20号端口建立数据连接
  • FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。

三、HTTP

HTTP (HyperText Transfer Protocol 超文本传输协议) 基于TCP,使用端口号80或8080。

每当你在浏览器里输入一个网址或点击一个链接时,浏览器就通过HTTP协议将网页信息从服务器提取再显示出来,这是现在使用频率最大的应用层协议。

这个原理很简单:

  • 点击一个链接后,浏览器向服务器发起TCP连接;
  • 连接建立后浏览器发送HTTP请求报文,然后服务器回复响应报文;
  • 浏览器将收到的响应报文内容显示在网页上;
  • 报文收发结束,关闭TCP连接。

HTTP报文会被传输层封装为TCP报文段,然后再被IP层封装为IP数据报。HTTP报文的结构:

可见报文分为3部分:

  • (1)开始行:用于区分是请求报文还是响应报文,请求报文中开始行叫做请求行,而响应报文中,开始行叫做状态行。在开始行的三个字段之间都用空格分开,结尾处CRLF表示回车和换行。
  • (2)首部行:用于说明浏览器、服务器或报文主体的一些信息。
  • (3)实体主体:请求报文中通常不用实体主体。

请求报文的方法字段是对所请求对象进行的操作,而响应报文的状态码是一个3位数字,分为5类33种:

  • 1xx 表示通知信息,如收到或正在处理。
  • 2xx 表示成功接收。
  • 3xx 表示重定向。
  • 4xx 表示客户的差错,如404表示网页未找到。
  • 5xx表示服务器的差错,如常见的502 Bad Gateway。

学习途径:实验楼

时间: 2024-08-09 18:22:25

实验:应用层协议 学习笔记的相关文章

实验:传输层:UDP协议 学习笔记

一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP数据报首部就标明了这两台主机的IP地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程. 主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和QQ在同时运行),下图中,A主机的AP1进程在于B主机的AP3进程通信,同时主机A的AP2进程也在与B主机的AP4进程通信. 两个主机的传输层之间有一个灰色双向箭头,写着“传输层提供应用进程间的逻辑通

xmpp协议学习笔记

本文是根据xmpp协议视频教程的学习笔记. 每一个客户端使用JID(jabber identifier)来作为身份标识 ,格式为[user"@"]domain["/"resource],其中 domain:服务器域名: user:用户名: resource:属于用户的位置或设备,比如是手机还是电脑     一个用户可以同时以多种资源与统一个XMPP服务器连接,完整的JID例子:[email protected]/iphone6s     stanza的通用属性:fr

Http 协议学习笔记 (燕十三老师)

Http 协议 重要性: 1. 无论以后用 WebService 还是用 rest 作大型架构,都离不开. WebService = Http 协议 + XML Rest = HTTP 协议 + Json 各种 API , 一般也是用 http + XML/json 来实现 2. 以及 Ajax 的学习 什么是协议 ( 就是客户端问服务器答) 计算机中的协议和现实中的协议是一样的,一式双份/多份. 双方/多方都遵从共同的一个规范, 这个规范就可以称为协议.计算机之所以能全世界互通,协议是功不可没

RTSP协议学习笔记

一.        RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色.尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据.媒体数据的传送可通过RTP/RTCP等协议来完成. 一次基本的RTSP操作过程是:首先,客户端连接到流服务器并发送一个RTS

【转】RTSP协议学习笔记

第一部分:RTSP协议 一. RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演"网络远程控制"的角色.尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据.媒体数据的传送可通过RTP/RTCP等协议来完成. 一次基本的RTSP操作过程是: 1> 客户端连

tcp/ip协议学习笔记一

一. 简述 以前在学校学习计算机网络的时候学习多是网络7层模型OSI,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什么东西,这个OSI它和 TCP/IP协议簇到底是什么关系,为什么有很多协议一样?ip指令格式是什么样的?为什么老是忘记,记不住?3次握手,4次握手协议是什么?ack,syn等等说不清道不明字段是指什么?为什么以太网网卡通信速率有100mbps,两台主机之间的通信却只有不到120kpbs?...所有的

HTTP协议学习笔记

一.web及网络基础 TCP/IP分层管理 应用层——传输层——网络层——链路层 TCP/IP通信传输流 想浏览http://www.xxx.com/aaa/页面,客户端(浏览器)请求DNS服务,得到与域名对应的IP地址,生成HTTP请求报文,TCP将请求报文分割为若干段,依靠IP协议,搜索对方的地址,一边跳转一边传送,TCP将收到的报文段重组为原来的顺序,WEB服务器依靠HTTP协议,对请求的内容进行处理,请求的处理结果同样也用TCP/IP协议向用户回传. URL格式 协议方案名://登录信息

tcp/ip 协议学习笔记   章一

一.tcp/ip包含: tcp/ip协议集包含四层:链路层.网络层.传输层.应用层 二.协议举例: 应用层: http.telnet.ssh ....传输层:TCP.UDP 网络层 :IP,ICMP,IGMP 链路层:ARP ,RARP 注:不是所有的程序都有这四层.有些基于IP,但是非tcp and 非UDP  eg:ping,某一些动态路由协议 三:IP地址分类 略 四:DNS 略 五:封装 数据封装是由tcp/ip协议栈完成的.不同的系统和主机,要遵行tcp/ip协议的标准 ,才能相互通信

I2C总线协议学习笔记 (转载)

1.I2C协议   2条双向串行线,一条数据线SDA,一条时钟线SCL.   SDA传输数据是大端传输,每次传输8bit,即一字节.   支持多主控(multimastering),任何时间点只能有一个主控.   总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.   系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet. 1.1 I2C位传输   数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit: