我们想象一下,用户输入网址进行HTTP请求,DNS服务器找到域名对应的IP地址,连接IP地址对应的服务器,那么服务器是如何知道用户是通过A域名还是B域名找到自己的呢?
本文旨在通过通信协议的例子让你更加深入了解HTTP以及一些小技巧,包括反向代理,HTTP报文,三次握手,DNS解析,DNS污染/劫持,HTTPS等。需要注意的是,本文碎片化的知识点实际上涵盖了很多方向和领域,大家可以针对自己的爱好进行有深度的涉猎。

从实际应用到理论支持,我们由"深"入"浅",透过现象寻找本质。

反向代理解析多域名

反向代理的作用就是作为中间层来访问内网站点,防止了直接将内容服务器暴露给外网,起到了安全防护的作用,也同样可以实现负载均衡、限流。

我们看一下Nginx上多域名配置的代码:

server
{listen 80;server_name A.com;location / {proxy_pass http://localhost:11111;}
}
server
{listen 80;server_name B.com;location / {proxy_pass http://localhost:22222;}
}

如上代码所示,A/B域名分别对应主机11111/22222端口。
可以看出,反向代理Nginx可以获取到HTTP请求中的域名。由此可以推断出DNS解析并不是单纯的将域明转换成IP地址。那么我们看一下HTTP报文是什么样子。

HTTP报文

我们打开Chrome监控HTTP请求,可以看到下图所示:

其中request中Host属性在整个HTTP请求中始终存在,并且不可更改,这也就是Nginx反向代理服务器所判断域名的依据。

HTTP的Request和Response的全部属性如下图所示:

TCP三次握手

HTTP协议(应用层)是基于TCP协议(传输层)的,并非从属关系。HTTP通信同样需要三次握手。
举个例子:

A:请求通话。(SYN)
B:请求通话。收到。(SYN+ACK)
A:收到。(ACK)

其中SYN代表同步,ACK代表确认。三次握手本身的设计就像是一个君子协议,之所以进行三次握手而非两次握手是为了解决网络延迟所造成的重新分组问题(可以理解为聊天过程中网络延迟导致的答非所问)。
三次握手与项目管理中的沟通模型一样:

细细体会,现实沟通中的"传递信息","告知收悉","反馈信息"和三次握手是一样的。

DNS解析

DNS服务器是key-value(域名-IP地址)对应的缓存服务器,当HTTP请求中host记录不在本地缓存时,向根(root)服务器转移解析请求。

DNS劫持

劫持DNS服务器,进而修改其解析结果。

DNS污染

对DNS查询进行***检测,发现与黑名单上匹配的请求,该服务器就伪装成DNS服务器,给查询者返回虚假结果。它利用了UDP协议是无连接不可靠性。

DNS解析、CDN加速、×××网关,这些通信层的东西面涉及到很多知识,我就不过多阐述了。我只说一点,大多数成熟的***技术都是基于互联网协议的。

HTTP与HTTPS

HTTPS中的s代表secure,也可以理解为HTTPS = HTTP + SSL
HTTP默认80端口,HTTPS默认443端口。同时,HTTPS对传输的数据进行加密。
更直观的感受是,访问HTTPS站点需要确认服务器的公钥和加密的证书,进而保证了数据传输的安全。

通信协议层的东西比较散,我并没有在上下文中进行较强的因果逻辑推断,因而显得知识点比较碎片化。通信层的东西本身和编程关系不大,但这些容易被程序员忽略的知识,往往像是一个纽带一样连接编程概念中的各个知识体系。希望本文对你有所帮助。

转载于:https://blog.51cto.com/12240152/2057225

多域名解析及延伸知识点相关推荐

  1. 计算机课程延伸知识点,【非计算机专业计算机基础课程教学改革】 计算机基础知识点归纳...

    摘要:在各种学科知识迅猛发展的今天,计算机技术已经渗透到社会的各个领域,它改变了人们的生活,也对现代人提出了更高的要求,让我们面临着许多新的技术挑战,因而计算机基础技术教育也越来越体现出其重要性.在该 ...

  2. 前端面试题---小米(总结知识点)

    1.CSS选择器有哪些?  选择器 例子 例子描述 CSS .class(Class选择器) .intro 选择 class="intro" 的所有元素. 1 #id(ID选择器) ...

  3. 暄桐知识点|笔顺有一定之规吗?

    欢迎来到"暄桐知识点"栏目~ 在这里,给大家分享课程的延伸知识点.无论是一些书法.国画的概念与常识,还是那些共性的知识点--来自林曦老师的线上直播课,也来自写字画画的日常.本期,针 ...

  4. 本周上榜的这9本原创技术书很赞,《数学之美》作者吴军博士新书霸榜

    刚刚小编看了一下排行榜,发现本周原创技术书上榜的很多,分享给程序员们,给你们做参考.支持原创图书从你我开始. 1.计算之魂 (<数学之美><浪潮之巅>等畅销书作者吴军博士新作, ...

  5. C++中的cin、cin.getline()、getline()函数比较

    1.cin用法 用法1:输入一个数字或字符 // cin用法// 用法1:输入一个数字或字符int a, b;cin >> a >> b;cout << a + b ...

  6. 2017-12-25 Linux学习笔记

    2.27linux和windows互传文件 本章学习Linux和windows互传文件的一个工具lrzsz. 前提条件: xshell,securecrt支持,putty不支持. 首先通过如下命令安装 ...

  7. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

    原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...

  8. 图文并茂,万字详解,带你掌握 JVM 垃圾回收!

    垃圾回收( Garbage Collection 以下简称 GC)诞生于1960年 MIT 的 Lisp 语言,有半个多世纪的历史. 在Java 中,JVM 会对内存进行自动分配与回收,其中 GC 的 ...

  9. 图文并茂,傻瓜都能看懂的 JVM 内存布局

    本 JVM 系列属于本人学习过程当中总结的一些知识点,目的是想让读者更快地掌握 JVM 相关的知识要点,难免会有所侧重,若想要更加系统更加详细的学习 JVM 知识,还是需要去阅读专业的书籍和文档. 本 ...

最新文章

  1. 蚂蚁森林合种计划(2020.10.31,7天有效,每周更新)
  2. Optional.isEmpty()在JDK 11 EA构建中可用
  3. 【转】揭开Linux的Swap之谜
  4. 趣学 C 语言(十)—— 控制台交互(getch() vs. getchar())
  5. [转载] Python的双端队列deque
  6. 阿里巴巴微服务技术实践
  7. 手机之家签名工具_IOS签名工具:魔力签
  8. 一位36岁被裁高管给你提个醒:在职场,这件事越早做越好
  9. 行贿罪、受贿罪刑事辩护6大要点
  10. linux 程序设置快捷方式,Linux中设置程序的桌面快捷方式
  11. 番茄花园洪磊,究竟错在哪里?
  12. SONY无线PS2遥控手柄与stm32单片机通信
  13. 【网易云音乐】浏览器控制台抓包(纯前端)
  14. pythonstdin_关于python:从sys.stdin接收输入,非阻塞
  15. [zabbix]cat ‘/home/cjw/create (1).sql/data‘ | mysql -uzabbix -p123456 -Dzabbix ERROR 1049 (42000):
  16. 精益看板方法从理论到实战 (7)—— 控制在制品数量(下)
  17. 服装企业ERP软件哪个公司好?施行服装ERP体系的要点是什么
  18. 为什么建议iOS开发使用Swift
  19. Unraid使用记录:系统安装与基础设置
  20. **没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案

热门文章

  1. Everything Toolbar – 用 Everything 替换 Win 10 任务栏系统搜索框
  2. java生成随机十位数_随机10位字符串生成
  3. mysql编号用什么类型_mysql 之编码配置、引擎介绍、字段操作、数据类型及约束条件...
  4. Spring Boot项目优雅的全局异常处理方式(全网最新)
  5. Spring Cloud微服务之搭建service_user模块(三)
  6. 经验总结[系统方面]
  7. 关于c/s vs web 程序的并发问题
  8. 开启Windows或者Mac OSX 本地服务器 (非安装第三方服务器软件)
  9. 网络广告中的CPS,CPA,CPL,CPC,CPM,CPR的含义是什么?
  10. megento 获取url参数