计算机网络原理与编程
Overview
邮件传输协议与域名解析协议
SMTP,POP3,IMAP
DNS
Web caches(proxy server)代理服务器
- 一般学校或ISP都会设置代理服务器。
- 这样访问时,可以访问代理服务器中的缓存。
如何查看代理服务器的IP地址?
可以通过浏览器端查询和设置。
- HTTP 请求经过代理服务器,回来时在代理服务器处缓存,其余request不需要再到origin server。
- 而Wireshark运行时,只可以监控到客户端到代理服务器的消息
- 客户端的缓存在本地评判与代理服务器的缓存策略不同,但是其目标还是相同的。
如何查看具体报文的表达?
- 查询相关的RFC,即可以看到http的说明文档。mannual/dictionary c.f.
web application书写好以后,是如何?
- 网页在书写好了以后需要被部署到一个服务器(Web 服务器 i.e. Apahe)上,且如果希望外网也访问的话,此即需要一个外网的IP,如果需要向内访问,也需要校内的IP地址;
- Personal server:可发展方便的预览,即将来发布出去时网站长什么样,即仅仅是为了开发调试。
内部IP地址
- 内网间的联系通过内网IP的转换。
- 局部范围内的IP地址。
electronic mail: SMTP
网络上的异步/同步通讯方式。
邮件传输是经典的异步信息传输。
主要组成
User agents(用户代理)
如果以www.方式登陆邮件网站,此时即为HTTP的传输方式,并不是我们考虑的SMTP传输方式。
此处我们考虑的是类似于outlook/网易邮箱大师/foxmail这种邮件代理
mail servers(邮件服务器)
Simple mail transfer protocol:SMTP
具体流程
user agent-> Alice’s mail server(163信箱) -> Bob’s mail server ->Bob’s user agent(ECNU 信箱);
“报文队列”
邮件协议
简单邮件传输协议:
邮件服务器之间的协议: SMTP
邮件访问协议:
POP3/IAMP
邮件发送协议:SMTP
用户代理
- a.k.a “mail reader”
- 编写邮件等等
- outgoing /incoming/messages stored on server
client /server端的确定
- 请求的发起者是client
- 等待响应请求是server
传输层:TCP连接
Sample SMTP interaction
报文格式:状态码+状态码的解释
S: hamberger.edu
C: crepes.fr
S: 220 服务就绪 hamburger.edu
C: HELO creps.fr(状态码与状态码的解释)
正文的最后以点结束
SMTPc.f.HTTP
HTTP | SMTP | |
---|---|---|
模式 | 拉 | 推 |
7位ASCII码 | 不是必须 | 必须 |
报文中的OBJect是否独立包装 | 是 | 不是 |
Mail message format
- 邮件报文格式
- 报文格式查询RFC 822
- c.f.握手协议:先握手再进行报文传输 最后关闭
3 phases of transfer
- handshaking
- transfer of messages
- closure
POP/IMAP邮件访问协议
- 当然通过网站访问时是通过的HTTP的方式
POP3
- firset phase(authorization)/授权阶段
- client commands:
- server reponses
- second phase:transaction /传输阶段
- list(check new mails)
- retr(retrieve message by number)
- dele (delete mails )
- quit
more about pop3
已读邮件不能再删除?
邮件服务器一旦访问即收录到本地了。
如果设置server端不备份呢?
outlook 中的个性化配置
个性化设置:IMAP
- 将文件都保存在server端。
- keeps user state across sessions:(会话)
- IMAP可以允许用户只读取报文的某些部分
DNS:domain name system
Ifconfig:是得到的本地的局域网的IP地址。
域名解析:将IP和域名关联映射起来。
域名解析方式
与身份证不同的是我们是分布式的域名系统,即是一种层次的结构。
根DNS/顶级DNS/权威DNS
那么为什么要使用分层的域名管理系统呢?
- Internet不是那么严格的中心化组织管理来保证其可用性。
- 利用分布式系统是为了提高可用性和可靠性
- 而集中式的系统会容易出现单点故障
为了更多的提供服务,一般服务器都是多个的;
表面上可能访问的是一个服务器,而物理上是多个服务器对于用户来说不是很轻易可以感受的到。
即许多IP地址都对应了一个域名。
根DNS
- 往往不负责域名解析,更多的根本地服务器和权威服务器打交道,我也解析不出来。
- 顶级域名服务器(TLD)/权威服务器
Local DNS name server(本地域名服务)
- Does not strictly belong to hierarchy
Sample:
requesting host -> local DNS server -> root DNS server ->Local DNS server -> TLD DNS server-> authorative
Local DNS 是中间人(迭代式解析)[真实环境]
root DNS 是中间人(递归式解析)[root server 所承受的压力大] (递归式的级联效应。)
DNS:caching ,updating records
是可以cache的
DNS records
- Ttl:一来一回的时间
- type=A/type=NS/type=CNAME(有些时候是别名)/type=MX
DNS protocol,messages
抓DNS的报文:上机作业;
Inserting records into DNS
注册域名的业务流程和映射最终是如何记录到分布式数据库里的?
Attacking DNS
- DDos attacks
- redirect attacks