专栏首页大前端计算机网络原理梳理丨应用层

计算机网络原理梳理丨应用层

目录

  1. 计算机网络应用体系结构
  2. 网络应用通信基本原理
  3. 域名系统
  4. 万维网应用
  5. Internet电子邮件
  6. FTP
  7. P2P应用
  8. Socket编程

计算机网络应用体系结构

C/S (客户/服务器)结构

通信只在客户与服务器之间进行,客户与客户之间不进行直接通信。

P2P (Peer to Peer)结构

每个对等端都同时兼备C/S应用的客户与服务器的特征,是一个服务器与客户的结合体,对等端之间直接通信。

混合结构

既有服务器的存在,又有对等端(客户)间的直接通信。


网络应用通信基本原理

C/S通信原理

服务器运行的是服务器进程,被动的等待客户端请求服务;客户端运行的是客户进程,主动发起通信,请求服务器提供服务。应用进程间遵循应用层协议交换应用层报文。


域名系统(DNS)

层次树状结构命名方法:

  1. 国家顶级域名 nTLD
  2. 通用顶级域名 gTLD
  3. 基础结构域名

域名服务器

  • 域名解析:将域名映射为 IP 地址的过程
  • 域名服务器:为了实现域名解析,需要建立分布式数据库,存储网络中域名与 IP 地址的映射关系,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务。域名服务器的分类: 1.根域名服务器(全球13套) 2.顶级域名服务器 3.权威域名服务器 4.本地域名服务器
域名解析过程
  • 迭代查询:只是将下一步要查询的的服务器告知查询主机或服务器。
  • 递归查询:代替查询主机或其它域名服务器,进行进一步的域名查询,并将最终解释结果发送给查询主机或服务器。(缺点:多查询请求情况下影响域名服务器的性能,资源占用高)

万维网应用

万维网的数据传输采用 TCP 连接,保证传输的可靠性以获得可靠地数据。

工作过程: 1.客户端 Web 浏览器根据域名向域名服务器查询目标服务器的 IP 地址 2.根据查询出来的 IP 地址建立 TCP 连接 3.建立连接后发送 HTTP 请求报文 (携带 URL) 4.目标服务器根据 HTTP 请求报文中的 URL 信息找到对应的网页资源(HTML)作为 HTTP 响应资源返回客户端 5.浏览器解析 HTML 并展示 6.访问结束。

HTTP 请求方式
  • 非持久连接:建立一个 TCP 连接,传输一个对象就断开连接 1.串行方式请求每个对象,且每次都要新建 TCP 连接,但不会同时建立多条连接 2.并行方式请求每个对象,每个请求建立一个 TCP 连接,会同时产生多条连接
  • 持久连接:建立一个 TCP 连接,传输多个对象 1.非流水方式:建立一个 TCP 连接后,依次顺序传输所有对象,获取完毕后断开 2.流水方式:建立一个 TCP 连接后,同时请求所有包含对象,获取完毕后断开
HTTP 报文
  • 请求报文

1.请求行:包含 方法、URL、版本号、回车符(结束标记) 2.首部行:包含所有需要上传的参数 及 回车符(结束标记)。参数以 Key:Value 形式存储,是明文 ASCII 字符,需要加密以提高安全性 3.实体主体:通常不用

请求行方法列举: GET:通过请求URI得到资源 POST:用于添加新的内容 PUT:用于修改某个内容 DELETE:删除某个内容 CONNECT:用于代理进行传输,如使用SSL OPTIONS:询问可以执行哪些方法 PATCH:部分文档更改 PROPFIND,(wedav):查看属性 PROPPATCH, (wedav):设置属性 MKCOL, (wedav):创建集合(文件夹) COPY, (wedav):拷贝 MOVE, (wedav):移动 LOCK, (wedav):加锁 UNLOCK (wedav):解锁 TRACE:用于远程诊断服务器 HEAD:类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据

  • 响应报文

1.状态行:版本、状态码、短语、回车符(结束标记) 2.首部行:包含所有需要返回的参数 及 回车符(结束标记)。参数以 Key:Value 形式存储,是明文 ASCII 字符,需要加密以提高安全性

状态行状态码列举:


Internet电子邮件

电子邮件系统结构

包括邮件服务器、简单邮件传输协议(SMTP)、用户代理、邮件读取协议(POP3 / IMAP)

SMTP

SMTP 是 Internet 电子邮件中信心应用层协议,实现邮件服务器之间或用户代理到服务器之间的邮件传输。

SMTP 使用传输层 TCP 实现可靠数据传输,端口号为25

SMTP 通过3个阶段的应用层交互完成邮件传输,分别是握手阶段、邮件传输阶段、关闭阶段

SMTP 的基本交互方式是 SMTP 客户端发送命令,命令后面可能携带参数, SMTP 服务器对命令进行应答。

SMTP 通讯过程

具体过程:

c 发送 TCP 连接请求 s 响应 220 携带域名 表示接受连接 c 发送 hello 命令 携带握手参数 s 响应 250 表示能够接受握手 进入邮件传输阶段 c 发送 MAIN_FROM 命令 携带邮件来源 s 响应 250 表示接收成功 c 发送 RCPT_TO 命令 携带发送目标 s 响应 250 表示接收成功 c 发送 DATA 命令,表示即将发送邮件主体 s 响应 354 ,表示可以接受主体 c 开始逐行发送邮件主体内容 c 发送结束标记 “.” + “回车” s 响应 250 表示接收成功 c 发送 QUIT 命令,表示退出指令 s 响应 221 邮件通讯全部完成

电子邮件格式与MIME

电子邮件格式:

电子邮件内容分为三个部分:首部、空白行、主体

首部关键词: TO 发送目标、 Subject 邮件主题、 Cc 抄送人、 From 发信人、 Date 发送日期、 Replay-To 回复地址

MIME(多用途互联网邮件扩展)

在邮件内容中支持多媒体文件的传输,比如图片、视频。它将非7位的ASCII码文本内容转换为7位ASCII码文本内容,然后再利用 SMTP 进行传输。

首部中会增加 MIME 首部行,说明主体内容原本的数据类型和采用的编码标准,接收方根据这些参数解码数据,得到原始数据。

邮件读取协议

POP3 第三版邮局协议(Post Office Protocol - Version 3,POP3):原理为相当于邮件下载

IMAP 互联网邮件访问协议(Internet Mail Access Protocol , IMAP ):直接维护邮件服务器内容

HTTP 产文本传输协议(Hyper Text Transfer Protocol,HTTP):通过浏览器即可访问邮件,不依赖客户端软件


FTP (文件传送协议)

可实现两个主机间文件互传的应用层协议,依赖传输层的 TCP 协议。

它与其它(SMTP、HTTP)服务不同的是,它需要两种连接:控制连接、数据连接

控制连接:负责传输控制命令,端口号 21 数据连接:负责传输文件内容,端口号 20


P2P 应用(对等模式)

充分利用了端系统的计算能力以及网络传输带宽,对服务器的依赖很小


Socket 编程基础

Socket 编程原理

网络应用进行通信时,需要通过 API 接口请求底层协议的服务。可以创建数据报类型套接字、流式套接字和原始套接字三种

数据报套接字:SOCK_DGRAM, 对应 UDP ,不可靠传输 流式套接字:SOCK_STREAM, 对应 TCP ,可靠传输 原始套接字:SOCK_RAW 对应, 对应 IP ,不具备传输层的服务

Socket 编程工作过程

基于TCP的Socket编程

基于UDP的Socket编程


本篇到此完结,更多 计算机网络知识 全面 and 系统的梳理中,持续更新~

期待您点击关注或点击头像浏览更多 大前端工程师 技术干货!

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HTTP 请求全解

    HTTP(Hyper Text Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器...

    码脑
  • 计算机网络原理梳理丨TCP/IP 协议族内含网络协议汇总及工作原理

    Domain Name System,域名解析系统,将域名解析为IP地址,DNS的默认缺省端口号为53

    码脑
  • 当Kotlin遇见数据结构丨实现中序线索化二叉树并遍历

    n个节点的二叉树含有n+1个空指针域。利用这些空指针域,存放指向节点的在某种遍历次序下的前驱节点及后继节点的指针,这种附加的指针称为"线索",加上了线索的二叉树...

    码脑
  • 域名系统工作原理

    网站上线前需要对网站进行渗透测试,上一节我们Sine安全讲师讲了web的基础知识了解,明白了具体web运行的基础和环境和协议,这一节我们来讨论下域名和DNS工作...

    网站安全专家
  • 渗透测试网站域名状态码分析

    网站上线前需要对网站进行渗透测试,上一节我们Sine安全讲师讲了web的基础知识了解,明白了具体web运行的基础和环境和协议,这一节我们来讨论下域名和DNS工作...

    技术分享达人
  • https是加一级域名还是二级域名呢 ?

    大家都知道ssl证书只对一个域名有效,也就是说不管你是主域名还是二级域名,都是需要单独申请一个ssl证书的,否则就不能使用https访问访问展现,那么https...

    合信ssl证书
  • 建网站视频教程:注册域名

    版权申明 如未注明,均为奶爸笔记原创,码字不易,转载请注明出处及原文链接! 本文标题:《建网站视频教程:注册域名》 本文链接地址:https://blog.n...

    奶爸建站笔记
  • 计算机网络学习--应用层

    第一章 概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层

    shimeath
  • 腾讯云上的个人网站建立

    第一次在网上有了自己的个人空间(有点小激动),写点废话留个纪念,然后顺便记录一下主要的流程

  • ArrayList源码分析(基于jdk1.8)(三):Arrays.asList方法带来的问题

    Arrays.asList,本来是另外一个类,之所以放到ArrayList相关的文章里面一并讨论,是因为这也是我们日常在使用过程中的一个误区,容易将Array...

    冬天里的懒猫

扫码关注云+社区

领取腾讯云代金券