C/S通信模型与B/S通信模型介绍
1、客户端与服务器之间的通信模型
基于Socket连接的客户端与服务器之间的通信模型图如上图所示,整个通信过程如下所示:
(1) 服务器端首先启动监听程序,对指定的端口进行监听,等待接收客户端的连接请求;
(2)客户端程序启动,请求连接服务器的指定端口;
(3)服务器收到客户端的连接请求后与客户端建立套接字(Socket)连接;
(4)连接成功后,客户端与服务器分别打开两个流,其中客户端的输入流连接到服务器端的输出流,服务器的输入流连接到客户端的输出流,两边的流连接成功后就可以进行双向通信了。
(5)当通信完毕后,客户端与服务器端两边各自断开连接。
注: 套接字(Socket):是一种相互通信计算机之间的双向端口,具体包括主机的IP地址,服务类型,TCP/IP协议的端口。其中,TCP/IP协议的端口就是描述网络通信发送和接收的进程的标识信息,具体说就是为信息的传说提供地点。当应用程序与端口绑定后,操作系统将收到的数据发送到端口指定的应用程序进程。每个端口有一个端口号的标识符,用来区分不同的端口。端口号可以是0~65535之间的任何数字。
0~255的端口号为系统的保留端口,用于系统进程的通信;
其他的端口是自由端口,可以为进程自由使用;
已定义的端口号:Tomcat 服务器的默认通信端口是8080;
MySQL默认的通信端口是3306;
SQLSERVER的默认通信端口是1433;
2、浏览器与服务器之(B/S)之间的通信模型
由以上1,可以看出C/S的通信模式是使用Socket来实现的,而B/S的通信模式是使用使用http来实现的。http(Hypertext transfer protocol)超文本传输协议,是一种详细规定了浏览器与万维网服务器之间相互通信的规则。
浏览器与服务器之间的通信,是一次完整的http通信过程,包括以下7个步骤:
(1) 建立TCP连接;
(2)浏览器向服务器发送请求命令(即http请求);
(3)浏览器发送请求头信息;
(4)服务器应答(即http响应);
(5)服务器发送应答头信息
(6)服务器向浏览器发送数据
(7)服务器关闭TCP连接
注: http请求与响应格式,见网址:http://www.cnblogs.com/shaoge/archive/2009/08/14/1546019.html
http响应码(即当我们浏览一个网页时,有时会出现”Not Fonud Error 505"类型的信息),如下所示:
1×× ——信息类(Information):表示收到浏览器的请求,正在进一步处理;
2×× ——成功类(successful):表示用户请求被正确接收,理解和处理;
3××——重定向类(Redirection):表示请求没有成功,客户必须采取进一步的动作;
4××——客户端错误(Client Error):表示客户端提交的请求有错;
5××——服务器错误(Server Error):表示服务器不能完成对请求的处理。
转载于:https://www.cnblogs.com/huangwentian/p/6892247.html
C/S通信模型与B/S通信模型介绍相关推荐
- I/O通信模型(BIO,NIO,AIO)
一.传统的BIO 网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请 ...
- 一起Talk Android吧(第三百二十四回:Android中网络通信之TCP通信模型一)
各位看官们,大家好,上一回中咱们说的是Android中网络通信之TCP客户端的例子,这一回中咱们说的例子是网络通信之TCP通信模型.闲话休提,言归正转.让我们一起Talk Android吧! 看官们, ...
- 【计算机网络】物理层 : 数据通信 ( 数据通信模型 | 信源 | 信宿 | 信道 | 通信方式 | 单工 | 半双工 | 全双工 | 数据传输方式 | 串行 | 并行 )
文章目录 一.数据通信模型示例 二.数据通信模型 三.数据通信模型 分类 四.数据通信 术语 五.三种通信方式 六.数据传输方式 一.数据通信模型示例 数据通信模型 示例 : ① 通信场景 : 两台计 ...
- JAVA网络IO编程
2019独角兽企业重金招聘Python工程师标准>>> JAVA网络IO编程(BIO NIO AIO) 一.传统的BIO编程 1.网络编程的基本模型是C/S模型,即两个进程间的通信. ...
- Java之IO,BIO,NIO,AIO
2019独角兽企业重金招聘Python工程师标准>>> 参考文献一 IO基础知识回顾 java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中I ...
- Netty 高性能特性
转自:http://www.infoq.com/cn/articles/netty-high-performance/ 1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用N ...
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...
- 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?
本文内容涉及同步与异步, 阻塞与非阻塞, BIO.NIO.AIO等概念, 这块内容本身比较复杂, 很难用三言两语说明白. 而书上的定义更不容易理解是什么意思. 下面跟着我一起解开它们神秘的面纱. BI ...
- 《大数据》2015年第3期“网络大数据专题”——从系统角度审视大图计算
从系统角度审视大图计算 吴城文,张广艳,郑纬民 (清华大学计算机科学与技术系 北京 100084) 摘要:大图计算已经成为学术界和工业界的一种基本计算模式,并且已经被应用到许多实际的大数据计算问题上, ...
最新文章
- 从算法到硬件,一文读懂2019年 AI如何演进
- “真”5G标准出炉!不止是速度,这些难以置信的改变将彻底颠覆你的生活
- C# where用法
- Java背景颜色怎么设成随机的_JS实现随机改变背景颜色
- chrome浏览器崩溃_不只是您:Chrome浏览器在Windows 10的2018年4月更新中崩溃
- 用php判断大月小月,php 获取月第一天和最后一天 | 学步园
- 转载:eclipse 搭建SSH项目(第二篇,有具体的项目例子)
- (转)好的投资应当是:善良为先,智慧为道,奋斗为本
- JavaWeb程序的目录结构(2)
- ASK,OOK,FSK,GFSK简介
- 这可能是史上最全的常用学术网站
- 【javaWeb微服务架构项目——乐优商城day14】——购物车(实现未登录状态的购物车,实现登陆状态下的购物车,实现未登录状态的购物车合并到登录状态)
- HTC M7日文版HTL22刷机包 毒蛇2.5.0 ART NFC Sense6.0
- 程序员传奇:我外婆是个程序员
- JQ---h5页面上实现微信扫一扫功能
- 搭建Ubuntu GPU服务器(宿主机篇)
- 屏蔽拦截广告(二、Android软件推荐)
- Docker(容器) 部署安装
- 虚拟专用网的技术分析
- nc608串口服务器型号,康海时代NC608系列产品信息
热门文章
- 用FFmpeg从视频截取任意一帧图片的解决办法~
- Linux 驱动编译报错:error: macro __DATE__ might prevent reproducible builds [-Werror=date-time]
- [html] webp与jpg、png比较,它有什么优劣势?如何选择?
- [html] websocket和http有什么区别?
- [html] canvas生成图片有没有跨域问题?如果有如何解决?
- [vue] 写出多种定义组件模板的方法
- [vue] vue边界情况有哪些?
- [css] 说出至少十条你理解的css规范
- 前端学习(2670): vue3.0实战开始建立新项目功能清单
- 工作53:$router问题