一。软件开发架构

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

  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. eclipse 错误日志地址

    我们用eclipse插件的时候,有时插件会报错误,那么这些错误日志在哪儿放着呢? 这些错误日志的存放位置是:“你的workspace名称\.metadata\.log”,如果我们的eclipse报错了 ...

  2. hasattr、getattr、setattr、delattr、反射

    目录 hasattr getattr setattr delattr 反射的应用 __import__(了解) 思考: 在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需要调用对 ...

  3. ASP.NET开发实战——(九)ASP.NET MVC 与数据库之ORM

    之前的文章中介绍了如何在ASP.NET中通过ADO.NET操作SQL Server和My SQL数据库,数据库的操作是通过SQL语句的执行来完成的,在ASP.NET中还有一个简便的方式来使用数据库,那 ...

  4. Luogu P4341 [BJWC2010]外星联络

    题目描述 暴力思路: 暴力枚举子串,插入trie树中,按字典序输出大于1的end的值 时间复杂度:n3 结果:TLE 0分 ...非常尴尬的一点不剩 正解思路 经过观察发现,可以只枚举后缀,统计时输出 ...

  5. IPv6地址编址

  6. JSP页面的注释细节

    业务场景:通过后台传参,jstl标签控制一个页签是否显示,不过现在要去掉判断,直接让页签显示 在sublime直接这样注释,然后刷新,一直找不到标签显示,其它的都是正常的 <!--<c:i ...

  7. 用Java开发的【智能语音开发板MEGA ESP32AI】

    有点激动 ~ ~ ~ 新鲜出炉,用视频看看效果哦 我们新研发出世的语音开发板MEGA ESP32AI,来看看吧,有点腻害哦!!!先演示下功能语音控制开关等.播报天气 戳下面链接看视频哦? MEGA E ...

  8. jQuery 源码解析(三) pushStack方法 详解

    该函数用于创建一个新的jQuery对象,然后将一个DOM元素集合加入到jQuery栈中,最后返回该jQuery对象,有三个参数,如下: elems Array类型 将要压入 jQuery 栈的数组元素 ...

  9. Linux(CentOS)启动时自动执行脚本(rc.local)

    下面说说通过rc.local文件进行开机启动 1.首先创建一个启动脚本,这里以启动docker为例 创建 docker-startup.sh 脚本 #! /bin/bash /usr/bin/mk-d ...

  10. Caused by: java.lang.ClassNotFoundException: org.springframework.data.repository.config.BootstrapMode

    1.起因,启动SpringBoot2.0的时候报了这个错误.说找不到类,咱也是刚学SpringBoot2.0,咱也不懂,咱也不知道问谁,研究一翻,找不到原因就百度了. 参考链接:https://blo ...