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. 架构委员会 正如前面所说,一个用来对架构治理策略的实现进行监督的跨组织的架构委员会是架构治理策略成功的主要要素之一.架构委员会应该能够代表所有主要 ...
随机推荐
- [经验]微信开放平台,一个APP secret可以绑定一个APP,然后再绑定一个ipad 版本APP
微信开放平台,一个APP secret可以绑定一个APP,然后再绑定一个ipad 版本APP
- VSTO学习(五)——创建Word解决方案
一.引言 在上一个专题中主要为大家介绍如何自定义我们的Excel 界面的,然而在这个专题中,我将为大家介绍如何用VSTO来创建Word项目,对于Word的VSTO开发和Excel的开发很类似,你同样也 ...
- 自动安装zabbix_agent脚本 -- python2
#!/usr/bin/env python # -*- coding: utf-8 -*- import os ZABBIX_SERVER_IP='10.171.100.28' if os.path. ...
- 剑指offer三十之连续子数组的最大和
一.题目 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...
- EF基础知识小记七(拆分实体到多个表以及拆分表到多个实体)
一.拆分实体到多个表 1.在日常开发中,会经常碰到一些老系统,当客户提出一些新的需求,这些需求需要在原来的表的基础上加一些字段,大多数人会选择通过给原表添加字段的方式来完成这些需求,方法,虽然可行,但 ...
- 面试题43:计算多少种译码方式(decode-ways)
这道题是非常典型的DP问题.按照DP的套路,关键是讨论出递推表达式,遍历过程中针对当前字符是否为'0'以及前一个字符为'0',分类讨论得出到目前字符为止最多有多少种译码方式?理清了递推表达式,代码是很 ...
- 一个基于Socket的http请求监听程序实现
首先来看以下我们的需求: 用java编写一个监听程序,监听指定的端口,通过浏览器如http://localhost:7777来访问时,可以把请求到的内容记录下来,记录可以存文件,sqlit,mysql ...
- asdfasdfasdfasdf
- webfrom后台
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...
- vue常见知识点整理
什么是 mvvm? MVVM 是 Model-View-ViewModel 的缩写.mvvm 是一种设计思想.Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑:View ...