title: 【重拾網(wǎng)絡(luò)】應(yīng)用層
date: 2017-07-20 21:49:20
tags: 網(wǎng)絡(luò)
categories: 網(wǎng)絡(luò)
原理
網(wǎng)絡(luò)應(yīng)用的體系結(jié)構(gòu):CS, P2P, 混合
不同端系統(tǒng)上的進(jìn)程通信方式:跨越計(jì)算機(jī)網(wǎng)絡(luò)交換報(bào)文
套接字:傳輸基礎(chǔ)設(shè)施向進(jìn)程提供的 API
-
進(jìn)程尋址:
- 主機(jī)地址:IP
- 進(jìn)程標(biāo)示符:端口號(hào)
- 網(wǎng)絡(luò)應(yīng)用的需求:
- 數(shù)據(jù)丟失/可靠性
- 時(shí)間/延遲
- 帶寬
- 安全
- 傳輸層提供的服務(wù):
- TCP:
- 面向連接
- 可靠傳輸
- 流量控制
- 擁塞控制
- UDP
- 無(wú)連接
- 不可靠數(shù)據(jù)傳輸
- TCP:
TCP & UDP 都無(wú)法提供時(shí)間/延時(shí)保障、最小帶寬保障
安全傳輸服務(wù):在 TCP 套接字基礎(chǔ)上實(shí)現(xiàn)的應(yīng)用層協(xié)議——SSL(Secure Socket Layer)
應(yīng)用層協(xié)議
應(yīng)用層協(xié)議定義的內(nèi)容:
- 交換的報(bào)文類(lèi)型
- 各種報(bào)文語(yǔ)法
- 字段語(yǔ)義
- 一個(gè)進(jìn)程何時(shí) & 如何發(fā)送報(bào)文
HTTP
這部分不知道怎么說(shuō)啊,內(nèi)容有點(diǎn)多、有點(diǎn)雜,簡(jiǎn)單記一下,尤其是眾多頭部。
簡(jiǎn)單記一下,挖個(gè)坑后期填。
- 連接類(lèi)型:
- 非持久連接:HTTP 1.0 版本默認(rèn)
- 持久連接:HTTP 1.1 版本默認(rèn)
- 無(wú)流水線(xiàn):使用一個(gè) TCP 連接,一個(gè)一個(gè)請(qǐng)求
- 流水線(xiàn):并行請(qǐng)求
- 各種頭部信息
- 無(wú)狀態(tài) & Cokite 技術(shù)
-
代理 & 緩存
條件 GET
對(duì)于相同 IP 的訪(fǎng)問(wèn),HOST 頭部完整指定主機(jī)名/域名URI
郵件系統(tǒng)構(gòu)成:用戶(hù)代理,郵件服務(wù)器(郵箱,報(bào)文隊(duì)列)、簡(jiǎn)單郵件傳輸協(xié)議
郵件協(xié)議基于命令/響應(yīng)模式
- 命令:ASCII 文本
- 響應(yīng):狀態(tài)代碼和語(yǔ)句
SMTP
簡(jiǎn)單郵件傳輸協(xié)議,特點(diǎn):
- 郵件報(bào)文體只能采用簡(jiǎn)單的 7 比特 ASCII 表示
- 一般不使用中間郵件服務(wù)器,郵件不在中間某個(gè)服務(wù)器留存
- 使用 TCP 可靠數(shù)據(jù)傳輸服務(wù),端口 25
- MIME:多媒體郵件擴(kuò)展,頭部增加 MIME 內(nèi)容類(lèi)型
與 HTTP 比較:
- 都建立在 TCP 連接,都是 持續(xù)連接
- HTTP 是拉協(xié)議,SMTP 是推協(xié)議
- SMTP 要求每個(gè)報(bào)文使用 7 比特 ASCII, HTTP 不受該限制
- 對(duì)混合消息處理,HTTP 把每個(gè)對(duì)象封裝在一個(gè)相應(yīng)報(bào)文里,SMTP 把所有對(duì)象放在一個(gè)報(bào)文
POP3 & IMAP
郵件訪(fǎng)問(wèn)協(xié)議
POP3 特點(diǎn):
- 實(shí)現(xiàn)簡(jiǎn)單
- 使用 TCP 連接,110 端口
- 三個(gè)階段:
- 認(rèn)證
- 事務(wù)處理
- 退出
- 無(wú)狀態(tài)
IMAP 特點(diǎn):
- 實(shí)現(xiàn)相對(duì)復(fù)雜
- 使用 TCP 連接,端口 145
- 可以把郵件與文件夾聯(lián)系起來(lái)
- 允許用戶(hù)代理獲取郵件
- 有狀態(tài)
TELNET 收發(fā)郵件 demo
// 使用 SMTP 發(fā)郵件
telnet smtp.163.com 25
HELO 163.com
AUTH LOGIN
Base64(YourUsername)
Base64(YourPassword)
MAIL FROM: <${Your Email Address}>
RCPT TO: <${Receiver's Email Address}>
data
Subject:${SUBJECT}
From:${SENDER}
To:${RECEIVER}
${DATA}
.
// 使用 POP3 收郵件
Telnet pop3.163.com 110
User:YourUsername
Pass:yourPassword
List
Retr 郵件編號(hào)
Dele 郵件編號(hào)
Quit