网络编程基础知识
一、软件开发架构
1、c/s架构:
client:客户端
server:服务端
2、b/s架构:
browser:浏览器
server:服务器
3、服务端:
24小时不间断提供服务,谁来我就服务谁
客户端:想体验服务的时候,就去找服务端体验服务
手机端:好像C/S架构比较火,其实不然,微信小程序,支付宝第三方接口 统一接口!
pc端:b/s比较火
本质:b/s其实也是c/s
4、总结
①我们学习网络编程socket就是为了完成c/s架构的开发
②并发编程、前端、数据库,框架是完成b/s架构的开发
二、概述
1、计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通讯协议的管理和协调下,实现资源共享和信息传递的计算机系统。
2、网络编程的目的:传播交流信息,数据交换,通讯。
3、达到的效果需要什么条件:
①如何准确地定位网络上的一台计算机(192.168.106.70:端口),定位到这个计算机上的某个资源
②找到了这个主机,如何传播数据
三、网络通信的要素
如何实现网络的通信?
通信双方地址:IP、端口
规则:网络通信协议:HTTP、TCP、UDP
TCP/IP参考模型:
总结:
1、网络编程中有两个主要问题:
①如何准确的定位到网络上的一台或者多台计算机
②找到主机之后如何进行通信
2、网络编程中的要素
①IP和端口号:IP
②网络通信协议:TCP、UDP
四、远程数据传输
1、要想实现远程通信,第一个需要具备的条件就是:物理连接介质
2、计算机与计算机之间实现远程通信,光有物理连接介质是不够的,它们需要一个共同的标准——互联网协议
五、OSI七层协议:
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
1、物理连接层
①实现计算机之间的物理连接,用来传输电信号的
②传输数据都是01010二进制
③电信号工作原理:电只有高低电平
2、数据链路层(以太网协议)——基于以太网通信,基本靠‘吼’。弊端是广播风暴
①规定了二进制数据的分组方式
②规定了只要是连入物联网的计算机都必须有一块网卡,网卡上刻有世界上唯一的编号每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号),我们管网卡上刻有的编号叫电脑的mac地址
③上面的两个规定其实就“以太网协议”,以太网协议无法跨局域网传输
3、网络层(IP协议)
①规定了计算机都必须有一个ip地址
②ip地址特点:点分十进制
③有两个版本ipv4和ipv6 :为了能够兼容更多的计算机
④最小:0.0.0.0 最大:255.255.255.255
⑤IP协议可以跨局域网传输
⑥ip地址能够唯一标识互联网中独一无二的一台机器!
交换机:如果没有交换机,你的电脑就变成了马蜂窝,有了交换机之后,所有的电脑只需要有一个网卡连接交换机 即可实现多台电脑之间物理连接
4、传输层(端口协议):TCP,UDP基于端口工作的协议
①其实计算机之间通信其实是计算机上面的应用程序于应用之间的通信。
②端口(port):唯一标识一台计算机上某一个基于网络通信的应用程序。
③端口范围:0~65535(动态分配) 注意:0~1024通常是归操作系统分配的端口号 。
④通常情况下,我们写的软件端口号建议起在8000之后 :flask框架默认端口5000 、django框架默认端口8000 、mysql数据库默认端口3306 、redis数据库默认端口6379 。
⑤注意:一台计算机上同一时间一个端口号只能被一个应用程序占用。
⑥小总结:
IP地址:唯一标识全世界接入互联网的独一无二的机器 。
port端口号:唯一标识一台计算机上的某一个应用程序 。
ip+port :能够唯一标识全世界上独一无二的一台计算机上的某一个应用程序。
5、应用层(http协议,ftp协议)
①应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式
②应用层功能:规定应用程序的数据格式。
③例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。
四、 TCP与UDP
1、TCP(流式协议,可靠协议)
①三次握手
TCP协议传输数据可靠地原因:给对方发消息,对方必须回复确认收到传输的数据才会删除,否则会在一定时间间隔之内反复发送直到对方接收或者超时
②四次挥手
2、UDP(数据报协议)
①无需建立双向连接,并且传输数据不可靠,可能会出现丢包的情况
②通信速度比较快,但是发送的数据不会在内存中保留! qq用的就是udp协议