网络编程
一、网络编程
软件开发架构
C/S架构 (client/server)
c:客户端
s:服务端
B/S架构(browser/server)
b:浏览器
s:服务器
ps:bs架构本质也是cs架构
手机端现在看上去cs架构比较火,实际上bs已经在崛起。类似于在微信和支付宝上都有很多其他app的接口
服务端:24小时不间断的提供服务
客户端:什么时候想体验服务,就去找提供服务的人寻求服务
网络编程的发展史:任何先进的技术最早都来源于军事
二、回到过去
早期的电脑 通过电话线
台式机电脑 通过网线
现在的笔记本电脑,无线电话 通过网卡
所以要想实现远程通信第一个需要具备的条件是:物理连接介质
三、OSI协议
计算机与计算机之间想要实现远程通信除了有物理连接介质之外还需要一套公共的标准/协议
OSI七层协议 (可以用七个字总结代表七层:应表会传网数物)
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
OSI五层协议 (现在也可以说是五层)
应用层
传输层
网络层
数据链路层
物理连接层
我们从下往上分析:
1.物理连接层:基于电信号传输01010101二进制数据
2.数据链路层
1.规定了电信号分组方式
2.规定了任何一台接入互联网的计算机都必须有一块网卡,每一块网卡上面都刻有世界上独一无二的编号。
12位16进制数 前6位是厂商编号,后6位是流水线编号
总结:以上两点合称为 ‘以太网协议’,基于以太网协议通信,不能跨局域网通信
互联网是由N多个局域网彼此之间连接而成的
局域网与交换机
3.网络层
IP协议:规定了只要是接入互联网的计算机都必须有一个IP地址
ip地址特点:点分十进制
ip地址最小:0.0.0.0 最大:255.255.255.255
ip地址目前有两个版本:IPV4 IPV6(由于IPV4已经不够表示目前存在的计算机了 所以推出了IPV6版本)
IP地址是动态分配的
4.传输层
TCP/UDP都是基于端口工作的协议,端口(port)
TCP协议:流式协议,可靠协议
基于TCP协议通信,必须先建立双向通道
TCP协议传输数据之所以可靠的原因就在于有反馈机制(重点******)
三次握手四次挥手:
1.三次握手建连接:客户端给服务端发送请求,服务端是一直在监听,服务端同意客户端请求之后和客户端连接并同时将请求的回应数据返回给客户端。最后是客户端返回一个确认消息。
2.四次挥手断连接:客户端现在不想连接服务端了,先发送断开连接请求,服务端回应断开,并检查是否还有未传输完成的数据传输完毕,把剩下的数据都传输完成(第三步),最后客户端返回一个确认消息。
计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
端口:用来唯一标识一台计算机上的某个应用程序
端口号的范围:0~65535
注意:0~1024这些都是操作系统默认使用的端口号
建议使用8000之后的端口
Mysql默认端口号:3306
Redis默认端口号:6379
django默认端口:8000
flask默认端口:5000
端口号是动态分配的
总结:
ip地址:用来唯一标识接入互联网的一台计算机
port端口:用来唯一标识一台计算机上的某个应用程序
ip+port:唯一标识接入互联网的一台计算机上的某个应用程序
5.应用层
HTTP协议
HTTPS协议