计算机网络——软件开发架构、网络编程、OSI七层协议

计算机网络——软件开发架构、网络编程、OSI七层协议

一、 软件开发架构

​ 规定了程序的请求逻辑、功能分块

​ 软件设计的大方向: 统一接口

1、C / S架构

client:客户端
server:服务端
 C/S架构,Client-Server,这种结构的软件要求我们必须安装一个客户端才可以使用,举个例子,你的微信使用的就是C/S架构,我们在使用微信的时候,必须在手机或者电脑上安装应用之后才可以使用。

缺点:这种结构存在一个天然的弊端,在进行应用更新的时候,我们必须同时更新服务器端和客户端。比如微信的更新,开发者在微信中添加了视频的功能,此时他会更新微信的服务器端,而我们想使用微信中视频的功能,就必须更新自己手机或者电脑上的微信才可以使用,其实用一个词来说,麻烦,就是C/S架构的弊端所在。

2、B / S架构

Browser:浏览器
Server:服务端
B/S架构,Browser-Server,只需要一个浏览器就可以使用的软件。举个例子,我们平时使用的网页淘宝就是一种B/S架构的应用软件。

优点:这种结构用户可以直接通过浏览器进行访问,更重要的是,这种应用软件的更新,只需要更新服务器端即可。比如淘宝做促销活动添加了很多新的活动内容,淘宝开发者更新服务器端之后,用户只需要刷新浏览器便可以看到新添加的内容,对于用户来说,这种结构很便捷。

二、网络编程

### 1、什么是软件编程

​		基于网络写代码、能够实现数据的远程交互

### 2、学习网络编程的目的

​		能够开发c / s架的软件

### 3、软件编程的起源

​		起源于美国军事领域:

想要实现计算机之间数据的交互

### 4、网络编程的必备条件

​		数据的远程交互

​			1、早期的电话:电话线

​			2、早期的台式电脑: 网线

​			3、笔记本电脑、移动电话: 网卡

​		实现数据的远程交互必备的基础条件是:物理连接介质

三、OSI七层协议简介

OSI七层协议:
	规定了所有计算机在进行远程数据交互时,必须经过相同的处理流程、在制造过程中必须要拥有相同的功能硬件。
    七层:
    	应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
    五层(常见):
    应用层、传输层、网络层、数据链路层、物理层
    四层:
    应用层、传输层、网络层、网络接口层
    在接收网络消息时:数据由下向上传递
    在发送网络消息时:数据由上向下传递

1、物理层

	主要用于计算机之间的物理连接介质,接收数据(Bytes、二进制)
    建立、维护、断开物理连接。(由底层网络定义协议)

2、数据链路层

建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
1、规定了电信号的分组方式
2、以太网协议
	规定了计算机在出厂的时候必须有一块网卡、网卡上的那串数字就是MAC地址
    该数字的特征:
    	12位16进制数据:前六位厂商编号、后六位流水线号

3、网络层

进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6)
IP协议:规定了所有接入互联网的计算机都必须有一个IP地址 类似于身份证号
	mac地址是物理地址可以看成永远无法修改
	IP地址是动态分配的 不同的场所IP是不同的
IP地址特征:
    IPV4:点分十进制
    	0.0.0.0
      255.255.255.255
    IPV6:能够给地球上每一粒沙分一个IP地址 
	 IP地址可以跨局域网传输
ps:IP地址可以用来标识全世界独一无二的一台计算机

4、传输层

定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

PORT协议(端口协议)
	用来标识一台计算机上面的某一个应用程序
	范围:0-65535
 	特征:动态分配(洗浴中心号码牌)
	建议: 
       0-1024  		 系统默认需要使用
    	1024-8000 	  常见软件的端口号  
       8000之后的   

URL:统一资源定位符(网址)
    网址本质是有IP和PORT组成的!!!

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

域名解析:将网址解析成IP+PORT

我们之所以不直接使用IP+PORT的原因是太难记 所以发明了域名(网址)

IP:PORT  实际使用冒号连接
    114.55.205.139:80

4.1传输层之TCP与UDP协议

TCP与UDP都是用来规定通信方式的
	通信的时候可以随心所欲的聊 也可以遵循一些协议符合要求的聊
  	随性所欲的聊:文字 图片 视频 小油腻话 你侬我侬
  	遵循一些协议:开头带尊称 首行空两格 只准用官话 不能打情骂俏
ps:不遵循上述协议也可以通信 只不过遵循了更合规合法合理!!!
  

1.TCP协议(重要)
	三次握手建链接
  	1.TCP协议也称为可靠协议(数据不容易丢失)
    	造成数据不容易丢失的原因不是因为有双向通道 而是因为有反馈机制
      给对方发消息之后会保留一个副本 直到对方回应消息收到了才会删除
      否则会在一定的时间内反复发送
 		2.洪水攻击
    	同一时间有大量的客户端请求建立链接 会导致服务端一致处于SYN_RCVD状态
  	3.服务端如何区分客户端建立链接的请求
    	可以对请求做唯一标识
  四次挥手断链接
  	1.四次不能合并为三次
    	因为中间需要确认消息是否发完(TIME_WAIT)
	"""
	三次握手和四次挥手也可以看成是小情侣谈恋爱的过程	
			三次握手:表白在一起
			四次挥手:决裂要分手
	"""
  ps:课下可以深入研究一下TCP图片上每个状态的具体情况
 
2.UDP协议
	也称之为数据报协议、不可靠协议	
  早期的QQ使用的是纯生的(没有加任何额外功能)UDP协议
  现在的QQ自己添加了很多技术和功能
 	使用UDP的原因就是因为很简单 快捷 粗暴 只要指定对方的地址就可以发消息了
  """
  TCP我们可以看成是打电话:双方你侬我侬
  UDP我们可以看成是发短信:只要发了就行 不管对方看不看
  """

4.2.三次握手

建立双向通道的过程称之为三次握手,建立通道的发起者可以是客户端也可以是服务端,下面我们就以客户端先主动发起为例

    客户端会朝服务端发送一个请求询问服务端:"我能不能挖一条通往你家的地道"

    服务端收到请求,回复说:"好吧 你挖吧",由于TCP是双向通道,客户端挖向服务端的通道只能给客户端朝服务端发消息使用,服务端要向给客户端发消息是没办法走这一条通道的,需要自己挖一条通往客户端的通道

    所以服务端在回复同意客户端挖通道的同时还会问一句:"那我能不能也挖一条通往你家的通道"

    客户端收到服务端请求后客户端到服务端的通道就挖成功了,然后也会同意服务端的请求,服务端挖向客户端的通道也会成功
                                          
4.2.1三次握手状态内容
所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。

第一次握手(SYN=1, seq=x):

客户端发送一个 TCP 的 SYN 标志位置1的包,指明客户端打算连接的服务器的端口,以及初始序号 X,保存在包头的序列号(Sequence Number)字段里。

发送完毕后,客户端进入 SYN_SEND 状态。

第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):

服务器发回确认包(ACK)应答。即 SYN 标志位和 ACK 标志位均为1。服务器端选择自己 ISN 序列号,放到 Seq 域里,同时将确认序号(Acknowledgement Number)设置为客户的 ISN 加1,即X+1。 发送完毕后,服务器端进入 SYN_RCVD 状态。

第三次握手(ACK=1,ACKnum=y+1)

客户端再次发送确认包(ACK),SYN 标志位为0,ACK 标志位为1,并且把服务器发来 ACK 的序号字段+1,放在确定字段中发送给对方,并且在数据段放写ISN的+1

发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态,TCP 握手结束。

4.3.四次挥手

建立一个连接需要三次握手,而终止一个连接要经过四次握手

当服务端或者客户端不想再与对方进行通信之后,双方任意一方都可以主动发起断开链接的请求,我们还是以客户端主动发起为例

    客户端由于已经没有任何需要发送给服务端的消息了,所以发起断开客户端到服务端的通道请求

    服务端收到该请求后同意了 至此客户端到服务端的单项通道断开

    服务端这个时候不会立刻朝客户端发器请求说那我也断开到你家的通道吧,服务端需要想想我手上还有没有需要发送给客户端的消息,如果还有的话,那我不能立马断开,先把数据发完才能断

    等服务端检查完毕之后发送也没有数据要给客户端了,这个时候就会朝客户端发起断开服务端到客户端的通道请求

    客户端同意该请求,至此四次挥手完成

总结:挥手必须是四次,中间的两次不能合并成一次,原因就在于需要检查是否还有数据需要给对方发

4.3.1
TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),也叫做改进的三次握手。客户端或服务器均可主动发起挥手动作,在 socket 编程中,任何一方执行 close() 操作即可产生挥手操作。

第一次挥手(FIN=1,seq=x)

假设客户端想要关闭连接,客户端发送一个 FIN 标志位置为1的包,表示自己已经没有数据可以发送了,但是仍然可以接受数据。

发送完毕后,客户端进入 FIN_WAIT_1 状态。

第二次挥手(ACK=1,ACKnum=x+1)

服务器端确认客户端的 FIN 包,发送一个确认包,表明自己接受到了客户端关闭连接的请求,但还没有准备好关闭连接。

发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态,等待服务器端关闭连接。

第三次挥手(FIN=1,seq=y)

服务器端准备好关闭连接时,向客户端发送结束连接请求,FIN 置为1。

发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个ACK。

第四次挥手(ACK=1,ACKnum=y+1)

客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态,等待可能出现的要求重传的 ACK 包。

服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。

客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。

4.4UDP协议

不可靠协议
当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。
当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
数据发送没有通道的概念 发送出去了就不管了

4.4.1UDP 的优缺点
UDP 的优点:

快,比 TCP 稍安全。

UDP 没有 TCP 的握手、确认、窗口、重传、拥塞控制等机制,UDP 是一个无状态的传输协议,所以它在传递数据时非常快。没有 TCP 的这些机制,UDP 较 TCP 被攻击者利用的漏洞就要少一些。但 UDP 也是无法避免攻击的,比如:UDP Flood 攻击。

UDP 的缺点:

不可靠,不稳定。

因为 UDP 没有 TCP 那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

基于上面的优缺点,那么,TCP 和 UDP 的应用场景都有哪些呢?
4.4.2 .应用场景
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如 HTTP、HTTPS、FTP 等传输文件的协议,POP、SMTP 等邮件传输的协议。

在日常生活中,常见使用 TCP 协议的应用如下: 浏览器用的 HTTP, FlashFXP 用的 FTP,Outlook 用的 POP、SMTP,Putty 用的 Telnet、SSH,QQ 文件传输。

5、会话层

建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话

6、表示层

表示层
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、EBCDIC、加密格式等

7、应用层

网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

8、每层运行常见的物理设备

9、每层运行常见的协议

四、网络相关的专业名称

1、专业名称

1、交换机
	能够将所有接入交换机的计算机彼此互联在一起
2、广播
	可以理解为:首次查找接入同一个交换机的其他计算机 需要朝交换机里面吼一嗓子
	主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。
3、单播
	首次被查找的计算机回应查找它的计算机 并附带自己的mac地址
4、广播风暴
	接入同一台交换机的多台计算机同时发广播
5、局域网
	可以简单的理解为有单个交换机组成的网络
	在局域网内可以直接使用mac地址通信
	 局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
6、广域网
	可以简单的理解为范围更大的局域网
7、互联网
	由所有的局域网、广域网连接到一起形成的网络
8、路由器
	不同的局域网计算机之间是无法直接实现数据交互的 需要路由器连接
    路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。 路由器是互联网络的枢纽,"交通警察"。目前路由器已经广泛应用于各行各业,各种不同档次的产品已成为实现各种骨干网内部连接、骨干网间互联和骨干网与互联网互联互通业务的主力军。路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。这一区别决定了路由和交换机在移动信息的过程中需使用不同的控制信息,所以说两者实现各自功能的方式是不同的。
  路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。

2、早期 : 联机

3、以太网 : 局域网与交换机

4、广域网与路由器

posted @ 2022-11-15 15:37  负剑远游行归来仍少年  阅读(370)  评论(0)    收藏  举报