网络编程

  • 1 > 软件开发架构
    • 1.1 > 架构的分类
    • 1.1.1 > C/S架构
    • 1.1.2 > B/S架构
    • 1.2 > 两种架构的有缺点
  • 2 > 网络编程简介
  • 3 > 网络体系结构
  • 4 > OSI七层协议 - 1
    • 4.1 > 物理层
    • 4.2 > 数据链路层
  • 5 > 网络知识补充
  • 6 > 专业设施名词
  • 7 > OSI七层协议 - 2
    • 7.1 > 网络层
    • 7.2 > 传输层
    • 7.3 > 应用层
  • 8 > 协议
    • 8.1 > TCP协议
    • 8.2 > )UDP协议

1 > 软件开发架构

  软件开发架构即 程序员在编写软件的时候应该遵循的架构设计,类似于我们之前所写的ATM和选课系统所采用的三层架构。

1.1 > 架构的分类

  基本的软件开发架构分为 C/S架构B/S架构

1.1.1 > C/S架构

  C/S架构中C指的是client(客户端),S指的是server(服务端)。
  客户端相当于是需要体验服务的客人,服务端相当于是对外提供服务的店面。
  我们手机上下载的各种app其实都是很个大厂商的客户端。打开app使用功能的时候其实就是相当于是基于网络去到厂家的店铺中去让服务员为你提供服务。

1.1.2 > B/S架构

  B/S架构它的本质也是C/S架构,就是我们将浏览器当作访问各大厂商的客户端的介质,这样我们就无需下载相应的客户端,就可以体验的服务了。

1.2 > 两种架构的有缺点

  C/S架构:
     优势:针对客户端可以进行高度定制,让用户体验感更好。
     劣势:必须是用户下载对应的客户端才可以使用。

  B/S架构:
     优势:无需下载对应的客户端就可以体验。
     劣势:无法做到高度定制的程度,体验效果较差

2 > 网络编程简介

# 什么是网络编程
	网络编程的研究前提就是基于互联网,网络编程就是基于互联网编写代码。
	
# 学习网络编程的目的/结构
	学习完网络编程之后就可以开发C/S架构的软件
	
# 网络编程发展史
	该技术源于美国军方,实际应用场景就是军方想要实现不同计算机之间的数据交互,因为当时没有网
络编程技术的时候只能拿着U盘拷贝重要资料并携带,所有为了实现跨区域交互数据所有发明了网络编程。

# 早期远程通信
	1.座机打电话
		彼此之间依赖着一根电话线
	2.大屁股电脑
		数据交互需要插网线
	3.智能手机
		数据交互需要无限网卡
	'''
		这三种通信方式都是需要一个物理链接介质才可以进行远程通信
	'''
# 互联网协议
	不同计算机之间要想实现无障碍交互,除了需要有物理链接介质之外还需要一套公有的标准
	这个标准就是 >>>> : 互联网协议(osi七层协议)

3 > 网络体系结构

  计算机网络中常见的体系结构有OIS参考模型和TCP/IP模型。
  OSI由国际标准协会(ISO)制定,共分为七层,由上而下依此为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。虽然OSI由ISO制定,但其实用性较差,并未得到广泛应用。
  在OSI诞生时,因特网已实现了全世界的基本覆盖,因此市面上应用最广泛的体系结构为因特网中使用的TCP/IP体系结构,该结构包含四层,分别为应用层、传输层、网际层和网络接口层。
  此外,在计算机网络中通常以一种包含五层协议的体系结构来讲解各层之间的功能与联系,这种体系结构结合OSI和TCP/IP的优点,分为应用层、传输层、网络层、数据链路层和物理层。
  以上三种体系结构中各层的对应关系如图

  五层协议体系结构中各层的功能分别如下:
  (1)物理层:计算机体系结构的最底层,它为设备之间的数据传输提供可靠的环境。
  (2)数据链路层:简称链路层,该层将从网络层获取的数据报组装成帧,在网络结点之间以帧为单位传输数据。
  (3)网络层:为分组交换网上的不同主机提供通信服务,在进行通信时,将从传输层获取的报文段或数据报封装成分组或包。
  (4)传输层:为应用进程提供连接服务,实现连接两端进程的会话。
  (5)应用层:为应用进程提供服务,定义了应用进程间通信和交互的规则。

4 > OSI七层协议 - 1

4.1 > 物理层

  物理链接介质,传递的是电信号。

4.2 > 数据链路层

  1. 规定了二进制数据的分组方式
  2. 规定了‘以太网协议’
    但凡能够接入互联网的计算机都必须有一块网卡
    每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号
    该编号是由12位16进制数组成,前六位是产商编号,后六位是流水线号。
    这个独一无二的编号也有一个称呼 .>>>: ‘mac地址’
    PS:基于mac地址就可以实现计算机之间的数据通信了

5 > 网络知识补充


# 1.什么是互联网
	将计算机彼此链接到一起的介质
	
# 2.互联网建立的目的
	基于互联网做数据交互

# 3.上网的本质
	基于网线去访问其他计算机上面的资源

6 > 专业设施名词


1.交换机
	让接入交换机的多台计算机之间彼此互联

2.局域网
	由交换机组成的网络称之为局域网(一个区域)

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

4.路由器
	将局域网彼此链接起来并支持数据交互
	互联网其实可以看成是由多个局域网链接在一起
'''
在局域网中可以直接基于mac地址实现数据交互
	但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
'''

7 > OSI七层协议 - 2

7.1 > 网络层

  网络层的核心就是IP协议,它规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)。IP地址目前有两个版本—— IPV4 、IPV6 。
  IPV4 :点分十进制
  地址范围在 (0.0.0.0~255.255.255.255)之间,随着社会的进步,计算机的使用越来越普遍IPV4地址已经不够用了,所有衍生出来了IPV6。
  IPV6 : 十六进制
  IPV6的地址范围广泛,甚至可以用来表示地球上每一粒沙子。


IP地址分为公网IP和私网IP
   		公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的
   			我们所有人的电脑默认使用的都是私网IP
   		
   		公网IP需要花钱购买并且需要实名认证并备案
   			很多非法网站都是在国外注册备案

7.2 > 传输层

  核心在于PORT(端口协议)。之所以一台计算机上面可以运行多个数据交互的软件例如微信、qq、钉钉。他们都是从内存中获取数据但是却不会乱套的原因就是端口协议的存在。
  端口号类似于手牌号,用于标识一台计算机上面正在运行的应用程序。端口号的范围是 (0~65535)。
  其中 0~1024 :是系统常用的端口号,1024 ~ 8000:是常用的软件端口号。我们以后写项目的时候推荐使用8000之后的端口。
  在使用端口号的时候需要注意以下情况:


	1.同一时间同一台计算机上面端口号不能冲突
	2. 端口号是动态分配的
		例如:打开微信随机分配一个没有被使用的端口号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
"""

7.3 > 应用层

   这里主要就是完全取决于程序员自己,使用什么协议。
   例如:HTTP协议 HTTPS协议 FTP协议 自定义协议

8 > 协议

   计算机网络通信基于TCP/IP,TCP/IP实际上并不是协议而是协议族,它由多种协议构成,包括TCP协议、UDP 协 议、IP协议等,其中TCP、UDP协议应用在传输层; IP协议应用在网络层。

8.1 > TCP协议

   即传输控制协议,该协议是一种面向连接的、可靠的、基于字节流的传输协议。在传递数据之前,收发双方会先通过一种被称为“三次握手”的协商机制使通信双方建立连接,为数据传输做好准备。为了防止报文段丢失,TCP会给每个数据段一个序号,使接收端按序号顺序接收数据。若接收端正常接收到报文段,向发送端发送一个确认信息;若发送端在一定的时延后未接收到确认信息,便假设报文段已丢失,并重新向接收端发送对应报文段。此外,TCP协议中定义了一个校验函数,用于检测发送和接收的数据,防止产生数据错误。

   通信结束后,通信双方经过“四次握手”关闭连接。因为TCP连接是全双工的 (全双工指交换机在发送数据的同时也能够接收数据,两者同步进行,类似语音通话,双方在说话的同时也能 够听到对方的声音) ,所以每个方向必须单独关闭连接,即连接的端需先发送关闭信息到另一端。 当关闭信息发送后,发送关闭信息的一端不会再发送信息, 但另一端仍可向该端发送信 息。

8.2 > )UDP协议

  即用户数据报协议,它是一种无连 接的传输层协议。UDP的收发双方不存在连接,当按照UDP协议传输数据时,发送方使用套接字文件发送数据报给接收方,之后可立即使用同一个套接字发送其他数据报给另一个接收方; 同样,接收方也可以通过相同的套接字接收由多个发送方发来的数据。

  UDP不对数据报进行编号,它不保证接收方以正确的顺序接收到完整的数据,但会将数据报的长度随数据发送给接收方。虽然UDP面向无连接的通信,不能如TCP般很好地保证数据的完整性和正确性,但UDP处理速度快,耗费资源少,因此在对数据完整性要求低、对传输效率要求 高的应用中一般使用 UDP协议传输数据。

更多推荐

网络编程 —— 基础理论知识