一。软件开发架构

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

  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. 剑指Offer-17.树的子结构(C++/Java)

    题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 分析: 注意这道题是判断B是不是A的子结构,而不是子树,这一点要注意下,且空树不是任意一个树的子结构 ...

  2. Bootstrap分页查询

    前台方法: function show() { $('#reportTable').bootstrapTable({ method: 'get', url: "@Url.Action(&qu ...

  3. 关于webpack的面试题

    随着现代前端开发的复杂度和规模越来越庞大,已经不能抛开工程化来独立开发了,如react的jsx代码必须编译后才能在浏览器中使用:又如sass和less的代码浏览器也是不支持的. 而如果摒弃了这些开发框 ...

  4. webrtc笔记(3): 多人视频通讯常用架构Mesh/MCU/SFU

    问题:为什么要搞这么多架构? webrtc虽然是一项主要使用p2p的实时通讯技术,本应该是无中心化节点的,但是在一些大型多人通讯场景,如果都使用端对端直连,端上会遇到很带宽和性能的问题,所以就有了下图 ...

  5. 表演的艺术,妖尾回合制战斗系统客户端设计[Unity]

    妖尾历经几年开发,终于在今年6月底顺利上线,笔者从2017年初参与开发,主要负责妖尾战斗系统开发.战斗作为游戏的核心玩法系统,涉及很多技术点,希望能借几篇文字,系统性总结MMORPG战斗系统的开发经验 ...

  6. python运维开发常用模块(7)web探测模块pycurl

    1.模块介绍 pycurl(http://pycurl.sourceforge.net)是一个用C语言写的libcurl Python实现,功能非常强大,支持的操作协议有FTP.HTTP.HTTPS. ...

  7. vs中 Stack around the variable 'XXX' was corrupted.

    https://blog.csdn.net/hou09tian/article/details/75042206 把 project->配置属性->c/c++->代码生成->基 ...

  8. 自动化API之一 自动生成Mysql数据库的微服务API

        本文演示如何利用Uniconnector平台,自动生成Mysql数据库的API,节约开发人员编写后台API的时间.使用生成API的前提是开发者有 自己的数据库,有数据库的管理权限,并能通过外网 ...

  9. 第一届云原生应用大赛火热报名中! helm install “一键安装”应用触手可及!

    云原生应用,是指符合“云原生”理念的应用开发与交付模式,这是当前在云时代最受欢迎的应用开发最佳实践. 在现今的云原生生态当中,已经有很多成熟的开源软件被制作成了 Helm Charts,使得用户可以非 ...

  10. golang io中io.go解读

    目录 1. 整体大纲 2. 接口 读 写 关闭 寻址 3. 函数 读 写 复制 4. 结构体 SectionReader LimitedReader teeReader 5. 备注 根据golang ...