一.网络编程
1、软件开发架构
c/s架构
c:客户端(client)
s:服务端(service)对外一直提供服务,稳定运行
b/s架构
b:浏览器(browser)
s:服务器(service)
手机端:好像C/S架构比较火,其实不然,微信小程序,支付宝第三方接口
统一接口!
pc端:b/s比较火
本质:b/s其实也是c/s
2、学习网络编程能做什么?
网络编程 >>> 开发cs架构的软件
并发编程,前端,数据库,框架 >>> 开发bs架构的软件
3. 如何实现远程沟通交流?
电话插电话线
电脑插网线
笔记本电脑无线网卡
要想实现远程通信,第一个需要具备的条件就是:物理连接介质
不同国家的人交流需要有一个公共的语言作为媒介 >>> 英文
计算机于计算机要想实现远程通信,光有物理连接介质是不够,
他们也需要一个共同的标准 >>> 协议
二.OSI七层协议(模型)
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件
每层运行常见物理设备
1、物理连接层:
实现计算机之间物理连接,传输的数据都是01010的二进制
电信号工作原理:电只有高低电平
2、数据链路层("以太网协议 ethernet")
1)规定了二进制数据的分组方式
2)规定了只要是接入互联网的计算机,都必须有一块网卡!
网卡上面刻有世界唯一的编号:mac地址
长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号(IEEE分配),后六位是流水线号)基于以太网协议通信:通信基本靠吼!!!
弊端:广播风暴
交换机:如果没有交换机,你的电脑就变成了马蜂窝(接口)有了交换机之后,所有的电脑只需要有一个网卡连接交换机,即可实现多台电脑之间物理连接
3、网络层(IP协议)
1)规定了计算机都必须有一个ip地址
2)IP协议可以跨局域网传输
3)ip地址能够唯一标识互联网中独一无二的一台机器!
ip地址特点:点分十进制
有两个版本ipv4和ipv6 为了能够兼容更多的计算机
最小:0.0.0.0
最大:255.255.255.255
4、传输层(端口协议)
TCP,UDP基于端口工作的协议!
其实计算机之间通信其实是计算机上面的应用程序于应用之间的通信
端口(port):
唯一标识一台计算机上某一个基于网络通信的应用程序
端口范围:0~65535(动态分配)
注意:0~1024通常是归操作系统分配的端口号
通常情况下,我们写的软件端口号建议起在8000之后:
flask框架默认端口 5000
django框架默认端口 8000
mysql数据库默认端口 3306
redis数据库默认端口 6379注意:一台计算机上同一时间一个端口号只能被一个应用程序占用
总结:
IP 地址:唯一标识全世界接入互联网的独一无二的机器
port 端口号:唯一标识一台计算机上的某一个应用程序
ip+port :能够唯一标识全世界上独一无二的一台计算机上的某一个应用程序
补充:
arp协议:根据ip地址解析mac地址
TCP协议(流式协议,可靠协议)
synchronize同步(请求)| acknowledge应答(确认)
三次握手建连接
建立双向通信
传输数据可靠的原因:
给对方发消息,对方回复确认收到,传输的数据才会被删除
否则,会在一定时间间隔之内反复发送,直到对方接收或者超时
四次挥手断连接
在断开链接的时候,双方都要确认是否还有数据需要发送
洪水攻击:
服务端大量处于接收连接请求的状态
UDP协议(数据报协议)
无需建立双向连接,并且传输数据不可靠,可能会出现丢包的情况
通信速度比较快,但是发送的数据不会在内存中保留!
qq用的就是udp协议
5、应用层(HTTP协议,FTP协议)