一。软件开发架构

  在所有软件中有两种结构模式

  1.c/s架构(client/server)

  c代表的是客户端

  s代表的是服务端

  2.b/s架构(browser/server)

  b代表的是浏览器

  s代表的是服务端

  当然,bs架构的本质也是cs架构。

  在现在手机中,软件中多有网站的链接等等,是c/s中b/s的体现。

二。七层协议

  应用层

  表示层

  会话层

  传输层

  网络层

  数据链路层

  物理层

  五层协议

  应用层

  传输层

  网络层

  数据链路层

  物理连接层

三。各个层的分析

  1.物理连接层

  在这一层,通常是指电信号的传输,以010101001010这种二进制的数据进行传输的的物理层。

  2.数据链路层

  这一层的协议表示的是:

  1规定了电信号的分组方式

  2.规定了任何一台接入互联网的计算机都有一块网卡,每一块网卡上,都刻有世界上独一无二的编号。

  是由12位16进制数组成,前6位是厂商编号,后六位是流水线编号。

  这十二位数共同组成了mac地址。

  这种协议被称为‘以太网协议’

  以太网协议通信的特点:

  通信广播。就是当在局域网中以以太网进行协议传输,当用户1需要对用户2进行访问时,需要广播其请求,使得在其局域网中的所有人都收到这个请求,但是只有用户2能够响应这个访问,然后与之建立连接。

  在局域网中,使用交换机进行集合,各个pc端通过交换机进行连接。交换机是基于以太网协议通信的。但是不能跨局域网进行通信。

  互联网:互联网是由多个局域网彼此之间连接而成。

  3.网络层

  在这一层使用的协议是ip协议。

  ip协议规定,只要是接入了互联网的计算机,都必须有一个ip地址。

  这类IP地址类似于255.255.255.0,是由点分十进制,

  最小的 是0.0.0.0,最大的是255.255.255.255。

  其中有ipv4和ipv6两种协议,开发ipv6的原因是v4不够使用。

  广域网与路由器。

  要使得局域网与局域网之间实现通信,需要使用路由器,将交换机连接至路由器,就可以和其他连入路由器的交换机进行通信。

  路由器与交换机之间有网关。

  ip地址是动态分配的。每当你重新连入一次网络后,都有可能会改变。

  4.传输层

  tcp

  udp

  在这一层中使用这两种协议,这些协议都是基于端口号(port)的协议。

  端口号是用来唯一表示一台计算机上的某个应用程序的。

  端口范围是0——65535

  假设一个pc机上有65536个应用程序启动,当启动地65537个时,会报错,因为没有端口给它使用了。

  注意:0~1024这些都是操作系统默认使用的端口号

  建议:使用8000之后的端口

  MySQL默认端口:3306

  Redis默认端口:6379

  django默认端口:8000

  flask默认端口:5000

  tomcat默认端口号:8080

  端口号也是动态分配的。

  我们通常使用ip+port唯一标识接入网络的软件。

  

  5.应用层

  http协议

  ftp协议 

  

  tcp协议

  TCP协议时一个流式协议,是可靠的协议。

  是基于TCP协议通信,必须先建立双向通信。

  其中包括三次握手 和四次挥手。

  三次握手:

 

  在三次握手时,客户端先发送连接请求向服务器,当服务器接受到请求后,返回收到请求的报告,并向其发送连接请求,这两个可以一起发送,最后客户端再返回一个收到服务器请求的反馈信息。这样双向通道就建立完毕了。

  四次挥手:

 

  四次挥手是在连接断开时的动作,一开始,客户端需要向服务器发送断开连接请求,服务器收到请求后,向客户端发送收到请求的消息,但不立即发送断开服务器与客户端之间的连接,因为,数据传输工作可能没有结束,需要完成传输工作后,再发送断开连接请求,当客户端收到断开连接请求后,再向服务器发送收到断开请求的消息,这时候双向通道才算完全断开。

  总共流程:

,  

day27_8.6 网络编程7层协议的更多相关文章

  1. UNIX网络编程---传输层:TCP、UDP、SCTP(二)

    UNIX网络编程----传输层:TCP.UDP.SCTP 一.概述 本章的焦点是传输层:包括TCP.UDP.和SCTP(流控制传输协议).SCTP是一个较新的协议,最初设计用于跨因特网传输电话信令. ...

  2. C#网络编程之---TCP协议的同步通信(二)

    上一篇学习日记C#网络编程之--TCP协议(一)中以服务端接受客户端的请求连接结尾既然服务端已经与客户端建立了连接,那么沟通通道已经打通,载满数据的小火车就可以彼此传送和接收了.现在让我们来看看数据的 ...

  3. 从websocket协议出发,了解应用层协议,传输层协议,网络的7层协议

    其他关联连接 :TCP的三次握手(建立连接)和四次挥手(关闭连接) 1.websocket是全双工,不同于传统半双工通信 传统的Web应用中,浏览器与服务器交互都是半双工通信(但并不完全是半双工通信, ...

  4. C#网络编程之--TCP协议(一)

    TCP 是面向连接的传输协议 面向连接,其实就好比,A打电话给B,如果B接听了,那么A和B之间就的通话,就是面向连接的 TCP 是全双工的传输协议 全双工,这个理解起来也很简单,A打电话给B,B接听电 ...

  5. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  6. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  7. iOS UI高级之网络编程(HTTP协议)

    HTTP协议的概念 HTTP协议,Hyper Text Transfer Protocol (超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议,HTTP是一个应用层协议,由请求和响 ...

  8. 网络编程(UDP协议-聊天程序)

    网络编程中的UDP协议中聊天程序,发送端口,和接受端口. 发送端口(Send): <span style="font-size:18px;">package cn.it ...

  9. UNIX网络编程——基于UDP协议的网络程序

    一.下图是典型的UDP客户端/服务器通讯过程 下面依照通信流程,我们来实现一个UDP回射客户/服务器: #include <sys/types.h> #include <sys/so ...

随机推荐

  1. 2019年最新50道java基础部分面试题

    [软帝学院]1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法. 1.一个".j ...

  2. IntelliJ IDEA 版本控制 GIT(四)

    1. 从GitLab或GitGitHub中检出项目 VCS - Checkout from Version Control - Git 2. 更新项目 第一种:更新当前窗口下的整个项目 第二种:更新相 ...

  3. 第09组 Beta版本演示

    组长博客 本组(组名)所有成员 短学号 姓名 2236 王耀鑫(组长) 2210 陈超颖 2209 陈湘怡 2228 许培荣 2204 滕佳 2205 何佳琳 2237 沈梓耀 2233 陈志荣 22 ...

  4. 一种单机支持 JavaWeb 容器万级并发的设想

    当前的大部分 Java web 容器基于 Bio 线程模型,例如常见的 tomcat ,默认 200 线程,即 200 连接.由此带来的问题是,如果想提高并发,或者提高资源利用率,就得加大线程数. 如 ...

  5. FineUIPro v6.0.0 大版本更新,快来围观!

    本月末(2019-09-20),我们会发布激动人心的 FineUI v6.0.0 版本,这个版本将带来一系列的重要更新! 在列举新版本特性之前,我们先来回顾下每次发布大版本的关键时间点: v1.0.0 ...

  6. spring boot 开启https

    1.生成证书 keytool -genkey -alias tomcat -keyalg RSA -keystore E:/https.keystore 将生成好的证书放在项目根目录即可 2 修改配置 ...

  7. 大话设计模式Python实现-模板方法模式

    模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 下面是一个模 ...

  8. mysql-新增数据库

    一.新增数据库 1.检查mysql 新增数据库之前,先检查是否安装了数据库,本次我们使用的是mysql数据库,检查是否安装mysql直接使用 mysql --version即可: 显示了mysql的版 ...

  9. 【shell脚本】定时备份数据库===dbbackup.sh

    定时备份数据库是很有必要的 一.脚本内容 [root@localhost dbbackup]# cat dbbackup.sh #!/bin/bash #备份数据库 mysqldump -uroot ...

  10. html-加水印--watermark--代码测试

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...