网络编程

一、软件开发的架构

    B/S架构

      B/S架构即浏览器和服务器架构模式,是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构。在这种架构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。B/S架构是WEB兴起后的一种网络架构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如Netscape NavigatorInternet Explorer,服务器安装OracleSybaseInformixSQL Server等数据库。浏览器通过Web Server同数据库进行数据交互。 这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。

 

 

 

    C/S架构

      服务器-客户机,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。
客户机通过局域网与服务器相连,接受用户的请求,并通过网络向服务器提出请求,对数据库进行操作。服务器接受客户机的请求,将数据提交给客户机,客户机将数据进行计算并将结果呈现给用户。服务器还要提供完善安全保护及对数据完整性的处理等操作,并允许多个客户机同时访问服务器,这就对服务器的硬件处理数据能力提出了很高的要求。
      在C/S结构中,应用程序分为两部分:服务器部分和客户机部分。服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户机部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。
      C/S结构在技术上已经很成熟,它的主要特点是交互性强、具有安全的存取模式、响应速度快、利于处理大量数据。但是C/S结构缺少通用性,系统维护、升级需要重新设计和开发,增加了维护和管理的难度,进一步的数据拓展困难较多,所以C/S结构只限于小型的局域网 。

 

 

 二、OSI七层协议

 

    

    互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。

    每一层都运行不同的协议。协议是干什么的,协议就是标准。

    实际上还有人把它划成五层、四层。

    七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

    五层划分为:应用层、传输层、网络层、数据链路层、物理层。

    四层划分为:应用层、传输层、网络层、网络接口层。

 

     物理层

      提供一个物理连接接口(网线口 无线网卡)

    数据链路层

      ① 规定了电信号的分组方式

      ② 使用以太网协议,规定了每一台计算机都必须有一块网卡,并且该网卡上都会有一个mac地址,该mac地址由十二位十六进制数组成,前六位代表了生产厂商,后六位代表了流水线号。

        每一台计算机的mac地址都是独立的,类似于身份证一样。

        有了mac地址后,计算机就可以在一个局域网内进行通信了,mac地址不能跨局域网传输,如果想要在互联网内通信,必须使用到一个硬件路由器,然后使用ip就能够连接多个局域网实现局域网之间的数据传输。

   

     网络层

      网络层定义了一个ip协议,接入互联网的计算都必须有一个IP地址用于唯一标识。

      该ip协议有两个版本:

        ivp4版本  0.0.0.0  到 255.255.255.255

        ivp6版本  能够表示出地球上每一粒沙子

 

 

    传输层

      传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,

那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

      ① 端口协议

        端口范围:范围:0~65535

        注意:0~1024系统默认需要使用的端口号, 1024~8000常见软件端口号,所以我们在开发时一般都是用8000以后的端口

      ② TCP协议

        流式协议、可靠协议

          数据发送后,等接收端反馈后才会将数据删除,如果接收端一致没有反馈,则会继续发送,如果长时间一直没有反馈,才会将数据删除并停止发送。

          三次握手(建立连接)          

            1.第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;

            2.第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;

            3.第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

            完成了三次握手,客户端和服务器端就可以开始传送数据。          

          四次分手(断开连接)    

            1.第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;

            2.第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我也没有数据要发送了,可以进行关闭连接了;

            3.第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入CLOSE_WAIT状态;

            4.第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

至此,TCP的四次分手就这么愉快的完成了。       

 

 

       ③ UDP协议

        不可靠协议

          数据发送没有通道的概念,发送出去就会将本地的数据删除。

      

    应用层

      规定应用程序的数据格式,都是人为自定义的协议标准,可遵循或不遵循。

 

posted @ 2022-01-11 17:10  椰子皮0oo0  阅读(77)  评论(0)    收藏  举报
1