目录
通信只在客户与服务器之间进行,客户与客户之间不进行直接通信。
每个对等端都同时兼备C/S应用的客户与服务器的特征,是一个服务器与客户的结合体,对等端之间直接通信。
既有服务器的存在,又有对等端(客户)间的直接通信。
服务器运行的是服务器进程,被动的等待客户端请求服务;客户端运行的是客户进程,主动发起通信,请求服务器提供服务。应用进程间遵循应用层协议交换应用层报文。
层次树状结构命名方法:
万维网的数据传输采用 TCP 连接,保证传输的可靠性以获得可靠地数据。
工作过程: 1.客户端 Web 浏览器根据域名向域名服务器查询目标服务器的 IP 地址 2.根据查询出来的 IP 地址建立 TCP 连接 3.建立连接后发送 HTTP 请求报文 (携带 URL) 4.目标服务器根据 HTTP 请求报文中的 URL 信息找到对应的网页资源(HTML)作为 HTTP 响应资源返回客户端 5.浏览器解析 HTML 并展示 6.访问结束。
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 字符,需要加密以提高安全性
状态行中状态码列举:
包括邮件服务器、简单邮件传输协议(SMTP)、用户代理、邮件读取协议(POP3 / IMAP)
SMTP 是 Internet 电子邮件中信心应用层协议,实现邮件服务器之间或用户代理到服务器之间的邮件传输。
SMTP 使用传输层 TCP 实现可靠数据传输,端口号为25
SMTP 通过3个阶段的应用层交互完成邮件传输,分别是握手阶段、邮件传输阶段、关闭阶段
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 邮件通讯全部完成
电子邮件内容分为三个部分:首部、空白行、主体。
首部关键词: TO 发送目标、 Subject 邮件主题、 Cc 抄送人、 From 发信人、 Date 发送日期、 Replay-To 回复地址
在邮件内容中支持多媒体文件的传输,比如图片、视频。它将非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):通过浏览器即可访问邮件,不依赖客户端软件
可实现两个主机间文件互传的应用层协议,依赖传输层的 TCP 协议。
它与其它(SMTP、HTTP)服务不同的是,它需要两种连接:控制连接、数据连接
控制连接:负责传输控制命令,端口号 21 数据连接:负责传输文件内容,端口号 20
充分利用了端系统的计算能力以及网络传输带宽,对服务器的依赖很小
网络应用进行通信时,需要通过 API 接口请求底层协议的服务。可以创建数据报类型套接字、流式套接字和原始套接字三种
数据报套接字:SOCK_DGRAM, 对应 UDP ,不可靠传输 流式套接字:SOCK_STREAM, 对应 TCP ,可靠传输 原始套接字:SOCK_RAW 对应, 对应 IP ,不具备传输层的服务
基于TCP的Socket编程
基于UDP的Socket编程
本篇到此完结,更多 计算机网络知识 全面 and 系统的梳理中,持续更新~
期待您点击关注或点击头像浏览更多 大前端工程师 技术干货!