网络编程1
软件开发架构
软件开发架构是什么
开发工程师在编写软件的时候应该遵循的架构设计
软件开发架构的分类
C/S架构
C:client(客户端)
S:server(服务端)
B/S架构
B:browser(浏览器)
S:server(服务器)
两种架构的优缺点
C/S架构:
优势:针对客户端可以高度定制
劣势:需要用户下载安装才能使用
B/S架构:
优势:无需下载,极速体验
劣势:无法做到高度定制,比较花哨的功能很难实现,体验效果较差
网络编程简介
什么是网络编程
网络编程的研究前提就是基于互联网,网络编程就是基于互联网编写代码
学习网络编程的目的
学习完网络编程之后就可以开发C/S架构的软件
网络编程发展史
该技术源于美国军方,很多网络前言的技术都是由军事发明后续转为民用
实际应用:
没有网络编程技术的时候只能拿U盘拷贝并携带实现不同计算机之间数据交互
网络编程的发明实现了跨区域交互数据
早期远程通信
- 座机电话
两个座机通信需要电话线 - 老式台式电脑
老式台式电脑(没有WIFI模块)数据交互需要插网线 - 智能手机
手机数据交互需要无限网卡 - 共同特征
远程通信的前提是必须借助一个物理链接介质(电话线,网线,无限网卡)
互联网协议
不同计算机之间要想实现无障碍交互不仅需要有物理链接介质,还需要一套公用的统一标准:互联网协议(OSI七层协议)
OSI七层协议
应用层
应用层有HTTP协议,HTTPS协议,FTP协议和自定义协议
表示层
可合并到应用层
会话层
可合并到应用层
传输层
PORT协议(端口协议)
用于标识一台计算机上面正在运行的应用程序
端口号的范围是:0~65535,可满足65536个软件同时运行
0~1024:操作系统经常使用的端口号
1024~8000:常用软件端口号
新建项目的时候推荐使用8000之后的端口
PORT协议特点
- 同一时间同一台计算机上面端口号重复,重复了会冲突
- 端口号是动态分配的
打开某软件随机分配一个没有被使用的端口号55555
关闭该软件重新打开会随机分配端口号
IP地址于PORT端口的应用
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序
IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序
实际案例:浏览器访问的各个网址其实就是IP+PORT
www.m.taobao.com 容易记忆
203.119.144.26 较难记忆
域名解析
将方便人们记忆的地址解析成真正的ip地址
www.m.taobao.com 解析 203.119.144.26
"""
网络层
IP协议
规定了每台接入互联网的计算机都必须有一个IP地址
IP地址目前有两个版本
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
随着社会的进步,计算机的使用越来越普遍,IPV4地址不够用(大概最多42亿台)
IPV6:十六进制
IPv6采⽤128位地址长度,⼏乎可以不受限制地提供IP地址
IP地址分为公网IP和私网IP
公网IP是可以直接被浏览器访问,私网IP不能直接访问
家用的电脑默认使用的都是私网IP
公网IP需要花钱购买,定期缴纳使用费用,还需要实名认证并备案
数据链路层
基于物理链接层接收到一串二进制数,如何切分才能正常解析?
1.规定了二进制数据的分组方式
2.规定了'以太网协议'
所有接入互联网的计算机都必须有一块网卡
每块网卡在出厂的时候都会被赋予一个全世界独一无二的用于识别的编号
该编号是由12位16进制数组成
前六位是产商编号
后六位是流水线号
这个独一无二的识别编号就是mac地址,,基于mac地址就可以实现计算机之间的数据通信
物理链接层
物理链接介质,作用是传递电信号
上述的七层总结简写为五层
- 应用层(三层)
- 传输层
- 网络层
- 数据链路层
- 物理链接层
网络知识补充
什么是互联网?
将计算机彼此链接到一起的介质
互联网建立的目的?
基于互联网做数据交互
上网的本质
基于网线去访问其他计算机上面的资源
专业设施名词
交换机
让接入交互机的多台计算机之间彼此互联
局域网
由交换机组成的网络称之为局域网(一个区域)
广播与单播
广播:在交换机中群发
单播:定向回复消息(根据mac地址)
路由器
将局域网彼此链接起来和支持数据交互
互联网其实可以看成是由多个局域网链接在一起
TCP与UDP协议
TCP协议
流式协议、可靠协议
基于TCP协议进行数据交互之前需要做一系列复杂的操作:三次握手四次挥手
三次握手建立链接
eg:彼此挖通道
四次挥手断开连接
eg:彼此切断通道
洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态
控制很多台计算机同一时刻去访问服务端,造成服务端瞬间过载瘫痪
UDP协议
丢包协议、不可靠协议
不需要建立双向通道,优势是数据的传输速度快,缺点是可能会丢失数据