B/S与C/S架构、B/S架构协议
软件有三大类型
单机类型、CS类型(Outlook、QQ、大型游戏)、BS类型
BS结构中的协议
在BS结构中,首先使用到DNS协议;网络传输部分使用TCP/IP参考模型,其中网络接入层没有相应协议,网际互联层是IP协议,传输层是TCP协议,应用层是HTTP协议(TCP/IP协议并不能具体工作,就像是程序中的接口,而Socket是TCP/IP协议的一个具体实现);另外在HTTP协议的上层还有Servlet标准。
DNS协议
DNS协议的作用是将域名解析为IP,我们把域名发过去它就可以给我们返回相应的IP,在Windows中可以使用nslookup命令来查看DNS解析的结果(域名的所有者将域名解析到对应的IP上,这样DNS服务器就能查找到)。
世界各地有很多DNS服务器,ISP会给我们提供默认的DNS服务器,也有一些大型公用的DNS服务器可以使用,比如Google的8.8.8.8和国内的114.114.114.114。
我们直接访问的DNS服务器叫本地DSN服务器,它本身也没有域名和IP的对应关系,在我们发出请求的时候它会从主DNS服务器获取然后保存到缓存中,下次再有相同的域名请求时直接从缓存中获取就可以了。
本地DSN服务器的配置:
在C:\windows\system32\drivers\etc\hosts文件中,设置格式是“IP+空格+域名”,一行一条记录(空格可以有多个),比如:127.0.0.1 localhost
本机在解析域名时首先会从hosts文件中查找,如果可以查找到就直接使用,如果找不到才会从DNS服务器获取。
hosts文件也可能会被恶意程序修改,这种情况可能会带来严重的后果。在Windows 7中hosts文件默认是只读文件。
Windows 7设置DNS服务器,设置方法是从控制面板中找到所使用的连接并从属性中打开TCP/IPv4属性设置页进行设置,如图:

有时候可能出现浏览器上不了网,而直接使用IP连接的程序(如QQ)可以联网,这时很可能就是DNS出了问题,可以尝试设置DNS服务器来解决问题。
BS结构网络传输的分解有两种方式
OSI参考模型、TCP/IP参考模型
| OSI |
TCP/IP |
| 应用层 | 应用层 |
| 表示层 | |
| 会话层 | |
| 传输层 | 传输层 |
| 网络层 | 网际互联层 |
| 数据链路层 | 网络接入层 |
| 物理层 |
TCP/IP协议
TCP/IP协议通常放在一起来说,其实它们是两个不同的协议。
TCP在传输之前会进行三次沟通,一般称为“三次握手”,传完数据断开的时候要进行四次沟通,一般称为“四次挥手”。
要理解这个过程首先需要理解TCP中的两个序号和三个标志位的含义:
seq:sequence number的缩写,表示所传数据的序号。TCP传输时每一个字节都有一个序号,发送数据时会将数据的第一个序号发送给对方,接收方会按序号检查是否接收完整了,如果没接收完整就需要重新传送,这样就可以保证数据的完整性。
ack:acknoledgement number的缩写,表示确认号。接收端用它来给发送端反馈已经成功接收到数据,它的值为希望接收的下一个数据包起始序号。
ACK:确认位,只有ACK=1的时候ack才起作用。正常通信时ACK为1,第一次发起请求时因为没有需要确认接收的数据所以ACK为0。
SYN:同步位,用于在建立连接时同步序号。刚开始建立连接时并没有历史接收的数据,所以ack也就没办法设置,这时按照正常的机制就无法运行了,SYN的作用就是来解决这个问题的,当接收端接收到SYN=1的报文时就会直接将ack设置为接收到的seq+1的值,注意这里的值并不是校验后设置的,而是根据SYN直接设置的,这样正常的机制就可以运行了,所以SYN叫同步位。需要注意的是,SYN会在前两次握手时都为1,这是因为通信的双方的ack都需要设置一个初始值。
FIN:终止位,用来在数据传输完毕后释放连接。

这里的四次挥手中画的是客户端提出的终止连接,在实际传输过程中也有可能是服务端提出终止连接,它们的处理过程都是一样的。
三次握手中前两次可以保证服务端可以正确接收并返回请求,后两次可以保证客户端可以正确接收并返回请求,而且在三次握手的过程中还使用SYN标志初始化了双方的ack值。四次挥手就是双方分别发送FIN标志来关闭连接并让对方确认。三次握手和四次挥手保证了连接的可靠性,不过凡事有利就有弊,这种模式也有它的缺点,首先是在传输效率上会比较低,另外三次握手的过程中客户端需要发送两次数据才可以建立连接,这种特性可能被一些别有用心的人利用,比如,发出第一次握手(并接到第二次握手)后就不回应第三次握手了,这时服务端会以为是第二次握手的数据在传输过程中丢失了,然后重新发送第二次握手,默认情况下会一直发送五次,如果发送五次后还收不到第三次握手则会丢弃请求,如果是个别这种请求当然也没什么关系,可凡事就怕一个多字,当有大量这种请求时就麻烦了,这时服务器就会浪费大量的资源甚至可能导致无法处理正常的请求,这就是DDOS攻击中的SYN Flood攻击,对于这种攻击的一种应对方法是设置第二次请求的重发次数(tcp_synack_retries),不过重发的次数太小也可能导致正常的请求中因为网络没有收到第二次握手而连接失败的情况,具体设置为多少合适,还需要根据实际情况判断,当然如果资金充足也可以使用硬防。
SSL协议
基于tcp上的http不安全,非法窃听者获得的请求副本里的数据是完全可读的形式
基于tcp上的ssl上的https,非法窃听者获得的请求副本里的数据是不可读懂的形式;并不是每个请求和响应都必须安全。
用户使用http请求受限资源 --> 容器发现受限资源配置了CONFIDENTIAL,是有传输保证的,而这个请求不是https请求;响应301重定向,要求使用https --> 浏览器使用https请求受限资源
HTTP协议
HTTP协议是应用层的协议,在TCP/IP协议接收到数据之后需要通过HTTP协议来解析才可以使用。
HTTP中报文分为请求报文(request message)和响应报文(response message)两种类型,这两种类型都包括三部分:首行、头部和主体。
| 请求报文 | 响应报文 | 备注 | |||
| 首行 | 请求行 | 包括请求方法、URL、HTTP版本 | 状态行 | 包括HTTP版本、状态码和简短原因,原因可有可无 |
首行、头部和主体以及头部的各项内容用回车换行(\r\n)分割, 另外头部和主体之间多一个空行,也就是有两个连续的回车换行。 |
| 头部 | 请求头 | 键值对,用冒号分割 | 响应头 | 键值对,用冒号分割 | |
| 主体 | 请求体 | POST类型的参数 | 响应体 | 页面要显示的内容 | |
Servlet标准
Servlet是J2EE标准的一部分,是Java Web开发的标准。
通过前面的TCP/IP协议、HTTP协议已经可以得到数据了,Servlet的作用是对接收到的数据进行处理并生成要返回给客户端的结果。Servlet还需要有Servlet容器。
B/S与C/S架构、B/S架构协议的更多相关文章
- DDD CQRS架构和传统架构的优缺点比较
明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...
- Atittit.研发公司的组织架构与部门架构总结
Atittit.研发公司的组织架构与部门架构总结 1. archi组织架构与 部门规划2 1.1. 最高五大组织机构2 1.2. 宗教事务部2 1.3. 制度与重大会议委员会2 1.4. 纠纷处理部: ...
- 常看常遇见之一——BS架构VS CS架构
常看常遇见之一——BS架构VS CS架构 1.BS架构 即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构.在这种结构下,用户 ...
- iOS应用架构谈:架构设计的方法论
缘由 之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验.在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会 ...
- 高吞吐高并发Java NIO服务的架构(NIO架构及应用之一)
高吞吐高并发Java NIO服务的架构(NIO架构及应用之一) http://maoyidao.iteye.com/blog/1149015 Java NIO成功的应用在了各种分布式.即时通信和中 ...
- 【转】USB协议架构及驱动架构
1. USB协议 1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器.USB主机控制器包含硬件.软件和固件一部分. 1.2 USB设备系统 ...
- ARM架构和X86架构对比
转载地址 我们就ARM架构的系统与X86架构系统的特性进行一个系统分析,方便用户在选择系统时进行理性.合理的比价分析. 一.性能: X86结构的电脑无论如何都比ARM结构的系统在性能方面要快得多.强得 ...
- 企业架构研究总结(39)——TOGAF架构能力框架之架构委员会和架构合规性
3. 架构委员会 正如前面所说,一个用来对架构治理策略的实现进行监督的跨组织的架构委员会是架构治理策略成功的主要要素之一.架构委员会应该能够代表所有主要干系人的需求,并且通常还需要对整个架构的审查及维 ...
- 企业架构研究总结(37)——TOGAF企业连续体和工具之架构资源库及架构工具的选择
3. 架构资源库 在一个企业,尤其是在一个大型企业中,建设一个成熟的架构往往会产生大量的工作产品.为了很好地管理和利用这些工作产品,企业需要制定一个正式的针对不同类型架构资产的分类方法,并且还需要专门 ...
- TOGAF架构能力框架之架构委员会和架构合规性
TOGAF架构能力框架之架构委员会和架构合规性 3. 架构委员会 正如前面所说,一个用来对架构治理策略的实现进行监督的跨组织的架构委员会是架构治理策略成功的主要要素之一.架构委员会应该能够代表所有主要 ...
随机推荐
- eclipse outline 中图标含义
先说颜色: 绿色:public 黄色:protected 蓝色:no modifier 红色:private 再说形状: 实心:method 空心:variable 实心中间有字母C:c ...
- centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)
centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本) ##################### sendmail.py begin ######## ...
- commons-pool2
转载请注明源出处:http://www.cnblogs.com/lighten/p/7375611.html 1.前言 本章介绍一下常用基础Jar包commons-pools2,最近使用到了thrif ...
- Vue路由-命名视图实现经典布局
Vue路由-命名视图实现经典布局 相关Html: <!DOCTYPE html> <html lang="en"> <head> <met ...
- Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but CLSID_VirtualBox w/ IUnknown works.
我是 win7 64位 解决办法: 1, win+r 快捷键打开 “运行”,输入regedit 打开注册表 2,找到 HKEY_CLASSES_ROOT\CLSID\{00020420-0000-00 ...
- 关于Item
0.Item The base class of all items, which implements default behavior. 项(Item)代表一个字节码中可以寻址的实体,有许多种类的 ...
- Python -- 网络编程 -- Socket发送文件
客户端如果直接send两次,一次发文件名,一次发文件内容 服务端接受的时候会一起接收,不知怎么分开发送,或者分开接收, 或者全部接收再解析内容 今天发现传送mp3文件的时候没问题,传送文本文件的话,以 ...
- python如何帮我在投资中获取更高收益
搞技术的大都比较纯粹,比较实在,除了工资之外基本就没有别的收入了(少部分人能接外包赚外块).或许是迫于生活的压力,或许是不甘于固定的工资,或许是出于技术人骨子里的好奇,亦或是这几年关于理财投资的大力宣 ...
- It is likely that the remote side declared peer gone on this JVM
java.net.ConnectException: t3://host:port: Bootstrap to host/host:port failed. It is likely that the ...
- JAVA 导出 Excel, JS 导出 Excel
本介绍两种Excle导出方法: JAVA 导出 Excle, JS 导出 Excle 1, js 根据 html 页面的 table > tr > td 标签导出 js代码: //导出 v ...