一.软件开发架构

  1.c/s架构

   c:客户端

   s:服务端

  2.b/s架构

   b:浏览器

   c:服务器

  手机端:好像C/S架构比较火,其实不然,微信小程序、支付宝第三方接口

  B/S架构的优点是统一接口

  PC端:B/S架构比较火

  本质:B/S其实也是C/S

  服务端:24小时不间断提供服务,谁来我就服务谁。

  客户端:想体验服务的时候,就去找服务端体验服务

二.网络编程介绍

  1.学习网络编程 -->>> 可以开发C/S架构的软件

   并发编程、前端、数据库、框架 -->>> 可以开发B/S架构的软件

   网络编程起源于美国军事,主要是实现远程数据的传输

  2.如何实现远程通信

   第一个需要具备的条件就是:物理连接介质

   第二计算机与计算机想要实现远程通信,还需要一个共同的标准---协议

  3.OSI七层协议(模型)

   OSI七层协议    我们只需要了解五层

    应用层------------->

    表示层-------------> 应用层

    会话层------------->

    传输层-------------> 传输层

    网络层-------------> 网络层

    数据链路层---------> 数据链路层

    物理连接层---------> 物理连接层

三.OSI协议解析

  1.物理连接层

   实现计算机之间的物理连接,传输的数据一般都是0101的二进制

   电信号功原理:电只有高低电平

  2.数据链路层(以太网协议!!)

   1.规定了二进制数据的分组方式

   2.规定了只要是介入物联网的计算机都必须有一块网卡

    网卡上面刻有世界唯一的编号:

     每块网卡出厂时都被烧制上一个世界唯一的MAC地址

     长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

   以上的两个规定其实就是以太网协议

  基于以太网协议通信:通信基本靠吼

  弊端:广播风暴

  交换机:如果没有交换机,你的电脑就变成了马蜂窝

      有了交换机之后,所有的电脑只需要有一个网卡连接交换机

      即可实现多台电脑之间物理连接

  3.网络层(IP协议)

   规定了计算机都必须有一个IP地址

   IP地址特点:点分十进制

   IP协议有两个版本ipv4和ipv6主要是能够兼容更多的计算机

   最小:0.0.0.0   0.0.0.0.0.0

   最大:255.255.255.255  255.255.255.255.255.255

   IP协议可以跨局域网传输

   IP地址能够唯一标识互联网中独一无二的一台机器

  4.传输层(端口协议)

   TCP、UDP基于端口工作的协议

   其实计算机之间的通信其实是计算机上应用程序与应用之间的通信

   端口(port):唯一标识一台计算机上某一个基于网络通信的应用程序

   端口范围: 0 -- 65535(动态分配)

     注意:0 - 1024通常是归操作系统分配的端口号

     通常情况下,我们写的软件端口号建议起在8000之后

     flask框架默认端口5000

     django框架默认端口8000

     MySOL数据库默认端口3306 

     redis数据库默认端口6379

   注意:一台计算机上同一时间一个端口号只能被一个应用程序占用

小结

  1.ip地址:唯一标识全世界介入互联网的独一无二的机器

  2.port端口号:唯一标识一台计算机上的某一个应用程序

  3.ip+port:能够唯一标识世界上第一无二的一台计算机上的某一个应用程序

  补充:

   arp协议:根据ip地址解析mac地址

  5.应用层(HTTP协议、FTP协议)

    TCP协议(流式协议,可靠协议)

     三次握手,四次挥手:

      三次握手建立连接

      四次挥手断开连接

 

DAY 30 网络编程基础的更多相关文章

  1. python全栈开发从入门到放弃之socket网络编程基础

    网络编程基础 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务 ...

  2. C#网络编程基础知识

    C#网络编程基础知识一 1.IPAddress类 用于表示一个IP地址.IPAddress默认构造函数 public IPAddress(long address);一般不用 其中Parse()方法最 ...

  3. iOS开发网络篇—网络编程基础

    iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过 ...

  4. Android 网络编程基础之简单聊天程序

    前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...

  5. 服务器编程入门(4)Linux网络编程基础API

      问题聚焦:     这节介绍的不仅是网络编程的几个API     更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系.     这节主要介绍三个方面的内容:套接字( ...

  6. Java网络编程基础(Netty预备知识)

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...

  7. 用Netty开发中间件:网络编程基础

    用Netty开发中间件:网络编程基础 <Netty权威指南>在网上的评价不是很高,尤其是第一版,第二版能稍好些?入手后快速翻看了大半本,不免还是想对<Netty权威指南(第二版)&g ...

  8. Linux 高性能服务器编程——Linux网络编程基础API

    问题聚焦:     这节介绍的不仅是网络编程的几个API     更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系.     这节主要介绍三个方面的内容:套接字(so ...

  9. Python网络编程基础pdf

    Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...

随机推荐

  1. face++静态库转为动态库之二

    上一篇的时候,已经介绍了如何将carthage转为动态库.这一篇,我们是单纯的建一个动态库.还是以face++为例 查看上一篇: face++静态库转为动态库 制作动态库 1.创建一个工程MGLive ...

  2. HDFS之HA

    HDFS高可用环境HA的架构 HDFS组件由一个对外提供服务的namenode(存储元数据)和N个datanode组成:Zookeeper有三个作用:1.为了统一配置文件 config 2.多个节点的 ...

  3. UGUI背包系统

    在Unity3d中,UGUI提供了Scroll Rect.Grid Layout Group.Mask这三个组件,下面就给大家介绍下如何用这个三个组件来实现滚动视图. 首先放置好背包的背景图 在矩形线 ...

  4. Linux资源分析工具杂谈(长文慎入)

    Linux资源分析工具杂谈 开篇之前请大家先思考一个问题:        磁盘的平均I/O响应时间是1 ms,这个指标是好,还是差? 众所周知,计算机科学是客观的,也就是说对于一个给定的问题,我们总是 ...

  5. CentOS 搭建git服务

    git服务器的搭建是非常简单的. 1. 安装git yum install git 2. 创建用户git groupadd git adduser git -g git passwd git 3. 创 ...

  6. 使用python连接mysql/oracle

    最近python比较火,我本身觉得python这种语言速度也不快,做项目也一般,学他干啥?但是了解到python把其他语言的函数封装成了自己的包,用python就可以直接调用,感觉python还是值得 ...

  7. js数组创建两种方法

    一.数组直接量形式创建数组 var arr=[];//空数组 ,,,,,]; ,,,],{x:,y:}]; ; ,x+,x+]; console.log(arr3); //[1,3,3,4] ,,]; ...

  8. MyBatis 处理sql中的 大于,小于,大于等于,小于等于

    Mybatis中的sql语句中的  “<”  和   “>”  号要用转义字符   “<”   和  ”>“ ,否则会报错! 如查找年龄大于等于指定年龄的用户信息: SELEC ...

  9. 项目遇到的小问题(关于vue-cli中js点击事件不起作用和iconfont图片下载页面css样式乱的解答)

     第一个:关于vue-cli中js点击事件不起作用 在vue的methods方法queryBtnFun()中拼接html和click操作事件的时候,发现点击事件一起未起作用: 后来发现是DOM执行顺序 ...

  10. layer —— 一个简单的jQuery弹出层插件

    layer的使用 4.24更新:注意:layer现在有旧版1.8.5版本和新版本3.0版本的,对应引入的JQ也要不同,相对应的JQ引入1.1和3.1,否则JQ会出问题 4.21更新: 解答4-19的问 ...