网络编程

软件开发架构

1.是什么?
程序员在写软件的时候遵循的架构设计[类似于ATM三层架构]
2.分类有哪些?
cs/bs两种
cs架构[client(客户端) server(服务端)]
	eg: 淘宝App为客户端, 里边的商品信息等相当于淘宝基于网络为客人进行服务
        
bs架构[browser(浏览器) server(服务器)]
	本质也是cs,用户无需下载客户端
 3. 优缺点对比:
    CS: 优势: 针对客户端可以高度定制[隐藏客户的信息]
        缺点: 需要下载客户端才能使用
    BS: 优点:无需下载,极速体验
        缺点:无法做到高度定制,体验效果差.
            """
  目前的趋势偏向于BS架构,
  eg: 微信小程序
 		只需要下载一个微信就可以通过微信去访问很多服务端
 		支付宝诸多应用
 			只需要下载一个支付宝就可以通过支付宝体验很多服务
 	统一提供接口服务>>>:获取大量用户及数据 中途还可以提供广告服务
            
            
            """

网络编程简介

1. 是什么?
   网络编程的研究前提是基于互联网, 网络编程就是基于互联网编写代码
2.学习目的:
    开发CS架构的软件[掌握原理,使用框架]
3. 发展史
	源于美国军方. 为实现不用计算机之间数据交换,跨区域交换数据,所以发明了网络编程.
    # 早期远程通信
    1. 座机电话:需要电话线
    2.大屁股电脑:需要网线进行数据交换
    3.智能手机:需要无线网卡进行数据交换
        三者远程通信的前提是必须具备一个物理链接介质
    # 互联网协议
    互联网协议[OSI七层协议]可以实现不同计算机之间无障碍交互[相当于一个翻译,将不同国家之间的语言翻译成一个大家都能理解的语言--二进制计算机语言]
        

OSI 七层协议简介

规定了所有计算机在生产过程中必须有相同的部分和功能: 应,表,会,传,网,数,物
    应用层,表示层,会话层,传输层,网络层,数据链路层和物理链接层. 可简化为五层:
        应用层[三层],传输层,网络层,数据链路层和物理链接层
    

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

每层运行常见物理设备

每层运行常见的协议

OSI七层协议01 之 物理链接层

OSI七层本质是规定了数据基于网络发送出去必须在计算机上经历一些固定的流程.
# 物理链接层
1. 规定了二进制数据的分组方式
2.规定了'以太网协议'
	进入互联网的计算机都必须有一块网卡, 每块网卡在出厂时都会被烧制一个全世界独一无二的编号.
    改变好是由12 位 16 进制数组成, 前六位是产商编号,后六位是流水线号. 该编号称为'mac地址' [类似于身份证号码] 
    数据通信基于mac地址.
    

网络知识补充

1. 什么是互联网
	计算机彼此链接到一起的介质
2. 互联网建立的目的
	基于互联网进行数据交互
3.上网的本质
	基于网线去访问其他计算机上面的资源
   '计算机也是服务器[服务端],专门对外提供服务'

专业设施名词

1. 交换机
	让接入交互及的多台计算机之间彼此互联
2. 局域网
	有交互机组成的网络称之为局域网[一个区域]
3.广播与单播
	广播: 在交互机中群发
    单播:定向回复消息[记录mac地址]
4. 路由器
	将局域网彼此链接起来并支持数据交互
    互联网其实可以看成是由多个局域网连接在一起
    '在局域网中可以直接基于mac地址实现数据交互'
    但是可能会出现交换机同一时间出现太多广播操作的情况[即广播风暴,可能会导致广播机瘫痪]
    mac地址只能用于局域网交互数据,不能跨局域网传输

图示互联网相关名词——局域网、广域网、交换机、路由器
交换机

   让接入交互机的多态计算机之间的彼此互联

局域网

由交换机组成的网络称之为局域网[一个区域]

广播与单播

广播:在交换机中群发
单播: 定向回复消息(记录mac地址)

4、路由器

将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起

OSI 七层协议02 之 网络层

# 网络层
IP协议
规定了每台接入互联网的计算机都必须有一个IP地址[取决于网线]
IP地址有两个版本:
    IPV4:点分十进制
        最小:0.0.0.0
            最大:255.255.255.255
     # IPV4地址不够用,于是有了IPV6十六进制
   IP地址是唯一标识独一无二的一台接入互联网的计算机  
IP地址分为公网IP和私网IP
公网IP可以直接被浏览器访问到,但是私网IP是不可以的.[我们的电脑默认使用的都是私网]




OSI 七层协议03 之传输层

PORT协议(端口协议)
  用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号)
    端口号的范围是:0~65535   [计算机上同时可运行的软件最大数]
      0~1024:系统经常使用的端口号
      1024~8000:常用软件端口号
      我们以后在写项目的时候推荐使用8000之后的端口
   1.同一时间同一台计算机上面端口号不能冲突
   2.端口号是动态分配的
    	eg:打开微信随机分配一个没有被使用的端口号8888
         关闭微信重新打开那么会随机分配可能还是8888也可能是其他
 """
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序

IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序

我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
	www.baidu.com					好记
	14.215.177.29:80      难记
	ip:port
	很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动映射
	

域名解析
	将好记的地址解析成真正的地址
		www.baidu.com	  解析		202.108.22.5:80
"""

OSI 七层协议之04 应用层

这里完全可以取决于程序员自己
HTTP协议 HTTPS协议 FTP协议 自定义协议

TCP与UDP协议

都属于传输层
# TCP协议
流式协议、可靠协议
  基于TCP协议进行数据交互之前需要做一系列复杂的操作>>>:三次握手四次挥手
  	"""三次握手建立链接
  		eg:彼此挖通道
  		
  	四次挥手断开连接
  		eg:彼此切断通道
  		
  洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态
  	控制很多台计算机同一时刻去访问服务端 造成服务端瞬间过载瘫痪
  """
    # UDP 协议
   丢包协议、不可靠协议
  不需要建立双下通道 数据的传输速度快 但是可能会丢失
  qq使用的就是UDP协议 所以有时候会产生数据丢失现象
  	但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全
   """
TCP协议类似于打电话:你一句我一句 你侬我侬
UDP协议类似于发短信:发了之后不管你看不看 只要发了就行
"""

面试题

 # TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对?  
描述的不够精确 不对!!!  TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制    基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除    否则在一定的时间内会频繁的多次发送知道确认或者超时为止  UDP协议发送数据之后会立刻删除内存数据 不会保留
posted @ 2022-04-14 19:20  Yietong  阅读(62)  评论(0)    收藏  举报