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通信模型介绍相关推荐

  1. I/O通信模型(BIO,NIO,AIO)

    一.传统的BIO 网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请 ...

  2. 一起Talk Android吧(第三百二十四回:Android中网络通信之TCP通信模型一)

    各位看官们,大家好,上一回中咱们说的是Android中网络通信之TCP客户端的例子,这一回中咱们说的例子是网络通信之TCP通信模型.闲话休提,言归正转.让我们一起Talk Android吧! 看官们, ...

  3. 【计算机网络】物理层 : 数据通信 ( 数据通信模型 | 信源 | 信宿 | 信道 | 通信方式 | 单工 | 半双工 | 全双工 | 数据传输方式 | 串行 | 并行 )

    文章目录 一.数据通信模型示例 二.数据通信模型 三.数据通信模型 分类 四.数据通信 术语 五.三种通信方式 六.数据传输方式 一.数据通信模型示例 数据通信模型 示例 : ① 通信场景 : 两台计 ...

  4. JAVA网络IO编程

    2019独角兽企业重金招聘Python工程师标准>>> JAVA网络IO编程(BIO NIO AIO) 一.传统的BIO编程 1.网络编程的基本模型是C/S模型,即两个进程间的通信. ...

  5. Java之IO,BIO,NIO,AIO

    2019独角兽企业重金招聘Python工程师标准>>> 参考文献一 IO基础知识回顾 java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中I ...

  6. Netty 高性能特性

    转自:http://www.infoq.com/cn/articles/netty-high-performance/ 1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用N ...

  7. Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

    本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...

  8. 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?

    本文内容涉及同步与异步, 阻塞与非阻塞, BIO.NIO.AIO等概念, 这块内容本身比较复杂, 很难用三言两语说明白. 而书上的定义更不容易理解是什么意思. 下面跟着我一起解开它们神秘的面纱. BI ...

  9. 《大数据》2015年第3期“网络大数据专题”——从系统角度审视大图计算

    从系统角度审视大图计算 吴城文,张广艳,郑纬民 (清华大学计算机科学与技术系 北京 100084) 摘要:大图计算已经成为学术界和工业界的一种基本计算模式,并且已经被应用到许多实际的大数据计算问题上, ...

最新文章

  1. 从算法到硬件,一文读懂2019年 AI如何演进
  2. “真”5G标准出炉!不止是速度,这些难以置信的改变将彻底颠覆你的生活
  3. C# where用法
  4. Java背景颜色怎么设成随机的_JS实现随机改变背景颜色
  5. chrome浏览器崩溃_不只是您:Chrome浏览器在Windows 10的2018年4月更新中崩溃
  6. 用php判断大月小月,php 获取月第一天和最后一天 | 学步园
  7. 转载:eclipse 搭建SSH项目(第二篇,有具体的项目例子)
  8. (转)好的投资应当是:善良为先,智慧为道,奋斗为本
  9. JavaWeb程序的目录结构(2)
  10. ASK,OOK,FSK,GFSK简介
  11. 这可能是史上最全的常用学术网站
  12. 【javaWeb微服务架构项目——乐优商城day14】——购物车(实现未登录状态的购物车,实现登陆状态下的购物车,实现未登录状态的购物车合并到登录状态)
  13. HTC M7日文版HTL22刷机包 毒蛇2.5.0 ART NFC Sense6.0
  14. 程序员传奇:我外婆是个程序员
  15. JQ---h5页面上实现微信扫一扫功能
  16. 搭建Ubuntu GPU服务器(宿主机篇)
  17. 屏蔽拦截广告(二、Android软件推荐)
  18. Docker(容器) 部署安装
  19. 虚拟专用网的技术分析
  20. nc608串口服务器型号,康海时代NC608系列产品信息

热门文章

  1. 用FFmpeg从视频截取任意一帧图片的解决办法~
  2. Linux 驱动编译报错:error: macro __DATE__ might prevent reproducible builds [-Werror=date-time]
  3. [html] webp与jpg、png比较,它有什么优劣势?如何选择?
  4. [html] websocket和http有什么区别?
  5. [html] canvas生成图片有没有跨域问题?如果有如何解决?
  6. [vue] 写出多种定义组件模板的方法
  7. [vue] vue边界情况有哪些?
  8. [css] 说出至少十条你理解的css规范
  9. 前端学习(2670): vue3.0实战开始建立新项目功能清单
  10. 工作53:$router问题