应用层的常见协议

域名解析协议DNS

因特网域名系统DNS是一个分布式数据库联机系统,采用客户机/服务器(C/S)应用模式。

客户机可以通过域名服务程序将域名解析成IP地址。当用户在浏览器中输入域名并按回车键之后:

  • 第一步,浏览器会检查缓存中有没有该域名对应的IP地址,如果有,解析过程结束;
  • 第二步,如果没有,浏览器检查操作系统缓存中是否有对应的DNS解析结果;
  • 第三步,在本机中无法完成解析,操作系统把请求发送给本地域名服务器(LDNS)查询;
  • 第四步,如果LDNS仍没有命中,直接到Root Seaver域名服务器查询;
  • 第五步,跟域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD),gTLD是国际顶级域名服务器如.com, .cn, .org等。
  • 第六步,本地域名服务器向gTLD服务器发送请求;
  • 第七步,gTLD服务器查找并返回此域名对应的Name Seaver服务器的地址,Name Seaver就是该域名注册时的域名服务器,该域名是在某个域名服务提供商申请的,那么该域名解析任务就由此域名提供商解析;
  • 第八步,Name Seaver服务器查询域名对应的IP,连同一个TTL值返回给DNS Seaver域名服务器;
  • 第九步,返回该域名对应的的IP和TTL,本地域名服务器会缓存该域名和IP地址的对应关系,缓存时间由TTL控制;
  • 第十步,本地域名服务器将结果返回给用户,用户根据TTL值缓存在本地系统中。

简单邮件传输协议SMTP

SMTP采用TCP链接;SMTP不使用中间的邮件服务器。

多用途邮件扩展类型MIME

由于SMTP只能传输ASCII码编码的文本,所以当发送非ASCII码的二进制数据时,必须先采用某种编码方式将其编码为可打印的ASCII码字符后,再作为邮件格式内容。

MIME不是对因特网文本报文格式的升级和替代,而是一种扩展。

超文本传输协议HTTP

HTTP包含HTTP Header和HTTP Body。HTTP头控制着互联网上的数据传输,还控制着用户浏览器的渲染行为和服务器的执行逻辑。

常见的HTTP请求头:

请求头

说明

Accept-Charset

用于指定客户端接受的字符集

Accept-Encoding

用于指定可接受的内容编码

Accept-Language

用于指定一种自然语言

Host

用于指定被请求资源的Internet主机号和端口号

User-Agent

客户端将它的操作系统、浏览器和其他属性告诉服务器

Connection

当前连接是否保持

常见的HTTP响应头:

响应头

说明

Server

使用的服务器名称

Content-Type

用来指明发送给接收者的实体正文的媒体类型

Content-Encoding

与请求头的Accept-Encoding相对应,告诉浏览器服务端采用的压缩编码格式

Content-Language

描述了资源所用的自然语言与Accept-Language对应

Content-Length

指明实体正文的长度,用以字节方式存储的十进制数字表示

Keep-Alive

保持连接时间

常见的HTTP状态码:

状态码

说明

200

客户端请求成功

302

临时跳转,跳转的地址通过Location指定

400

客户端请求有语法错误,不能被服务器识别

403

服务器收到请求,但拒绝提供服务

404

请求支援不存在

500

服务器发生不可预期错误

应用层的其他常见协议:

  • 文件传输协议FTP
  • 邮局协议第三版POP3
  • 因特网报文存取第四版IMAP4
  • 远程登录服务标准协议Telent
  • 简单文件传输协议TFTP
  • 简单网络管理协议SNMP
  • ......

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏好好学java的技术栈

并发基础篇(一): 线程介绍

14630
来自专栏Albert陈凯

HTTP、TCP、UDP:通信协议的规则和区别

TCP、HTTP、UDP:都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。 TCP HTTP UDP三者的...

31880
来自专栏SDNLAB

【连载-4】数据中心网络虚拟化 配置管理技术

在构建虚拟网络时,管理员需要进行大量的配置工作,例如端口的ip地址和VXLAN配置等等。显然,没有人愿意在系统每次启动时都将繁琐的配置工作重复一遍,所以将配置信...

28650
来自专栏人人都是极客

Linux下so动态库一些不为人知的秘密

Linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。

22120
来自专栏Java学习网

Java中的Socket编程学习

Java中的Socket编程学习   Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一。如今大多数基于网络的软件,如浏览器,即时通讯工...

30270
来自专栏用户2442861的专栏

recv函数说明返回值

客户端的程序连接上服务器后recv函数阻塞接受,有时会返回0,说明接收超时服务器主动断开了连接,需要重新connect服务器,但重新connect时会报“Tr...

52110
来自专栏difcareer的技术笔记

JNI实现源码分析【五 结束语】正文

一开始打算用一篇文章来写的,结果写着写着,发现内容实在太多了,一篇文章显得很乱,有很多地方不知道先写哪个好,经过一段时间的构思后,决定用一个系列来写,分多个部分...

10050
来自专栏大闲人柴毛毛

Linux系统服务——Daemon

什么是Daemon? Daemon是Linux的一些系统服务,它们是一些常驻内存的进程。 Daemon分类 Daemon拥有两种分类方式,按照“daemon是...

39040
来自专栏向治洪

github搭建个人网站

1. 注册账号: 地址: https://github.com/ 输入账号、邮箱、密码,然后点击注册按钮.  ? 2. 初始设置 注册完成后,选...

60780
来自专栏写代码的海盗

hadoop2.2.0安装需要注意的事情

今天在安装hadoop2.2.0时遇到若干问题,解决这些问题有些心得,记录下来以备不时之需。 问题1、master和slave之间不能相互ssh免密码登陆。  ...

33140

扫码关注云+社区

领取腾讯云代金券