DAY 30 网络编程基础
一.软件开发架构
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 网络编程基础的更多相关文章
- python全栈开发从入门到放弃之socket网络编程基础
网络编程基础 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务 ...
- C#网络编程基础知识
C#网络编程基础知识一 1.IPAddress类 用于表示一个IP地址.IPAddress默认构造函数 public IPAddress(long address);一般不用 其中Parse()方法最 ...
- iOS开发网络篇—网络编程基础
iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过 ...
- Android 网络编程基础之简单聊天程序
前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...
- 服务器编程入门(4)Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字( ...
- Java网络编程基础(Netty预备知识)
今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...
- 用Netty开发中间件:网络编程基础
用Netty开发中间件:网络编程基础 <Netty权威指南>在网上的评价不是很高,尤其是第一版,第二版能稍好些?入手后快速翻看了大半本,不免还是想对<Netty权威指南(第二版)&g ...
- Linux 高性能服务器编程——Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字(so ...
- Python网络编程基础pdf
Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...
随机推荐
- 关于表情的战争APP隐私政策网址
本软件尊重并保护所有使用服务用户的个人隐私权.为了给您提供更准确.更有个性化的服务,本软件会按照本隐私权政策的规定使用和披露您的个人信息.但本软件将以高度的勤勉.审慎义务对待这些信息.除本隐私权政策另 ...
- sublime There are no packages available for installation 问题的解决办法
这个是因为IPv6的原因, 因此我们需要修改我们的 /etc/hosts文件. 第一步: 执行: nm-tool 获取DNS的信息 例如: DNS: 192.168.1.11 第二步: 在/etc/h ...
- JavaScript Object中的函数assign
Object函数提供了一个叫做assign的函数,用来合并多个对象. Object.assign(...): 你可以传递多个对象给该函数,这些对象中的自有且可枚举的属性,会被拷贝给第一个对象. var ...
- [macOS] Mojave10.14 夜神安卓模拟器启动问题
废话不多说,其它的都有在这里讨论: https://bbs.yeshen.com/forum.php?mod=viewthread&tid=8566 我的最终解决办法是,virtualbox安 ...
- SpringBoot整合Apache Shiro权限验证框架
比较常见的权限框架有两种,一种是Spring Security,另一种是Apache Shiro,两种框架各有优劣,个人感觉Shiro更容易使用,更加灵活,也更符合RABC规则,而且是java官方更推 ...
- 关于Win10安装vs2013简体中文语言包无法安装的问题
Win10下安装VS2013后无法安装VS2013中文简体语言包,提示Windows程序兼容模式已打开. 解决方案: 1,随便找个文件夹将简体中文语言包放入其中,发送快捷方式到桌面,右击快捷方式 选择 ...
- JavaFX-Application
JavaFX—Application 1.Application是JavaFX程序的入口,任何javafx应用程序程序都要继承该类并重写start()方法 public class TsetStage ...
- Unity 让物体朝摄像机观察方向移动,已摇杆方向转向
using System.Collections;using System.Collections.Generic;using UnityEngine; [RequireComponent(typeo ...
- Spring Boot 指定某个依赖的版本
Spring Boot 是个很好的框架,他为了他的一些功能生效,定义了一些依赖的版本. 比如说:Spring Boot 1.5.x 中elasticSearch是2.4.x的,这个是他本身就定义好的. ...
- centos7将网卡名字改成eth样式
ll /etc/sysconfig/grub lrwxrwxrwx 1 root root 17 Jun 12 2016 /etc/sysconfig/grub -> /etc/default/ ...