网络编程理论

软件开发架构

  1.C/S

    C/S即Client/Server(客户端/服务器)结构,简单来说就是需要下载并且安装专用的客户端软件才能运行(例如手机中的各类app),并且服务器端也需要特定的软件支持,并采用大型数据库系统。

 

 

   2.B/S

    B/S即Browser/Server(浏览器/服务器)结构,就是只用安装维护一个服务器(Server),而客户端采用浏览器(Browser)运行软件。 也就是说客户端只需要启动一个浏览器就可以了。

 

 

 

网络编程

  网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。

  要想实现远程数据交互的前提是必须要有物理连接介质。除了有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西(标准)。

  联机方式

    早期处于单对单的联机方式

 

 

 

    为了满足多台服务器间的链接而出现了交换机。

 

 

 

  交换机的主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要)。这种通信方式被称为广播。

 

  局域网和路由器

    局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。

    路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网。

    

OSI模型

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

 

 

 

  物理层

    计算机与计算机之间的通信,必须要有底层物理层方面的连通,物理连接层提供了一个物理连接接口(网线口 无线网卡)。

  数据链路层

    1.规定了电信号的分组方式

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

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

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

  网络层

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

    该ip协议有两个版本:

      ivp4版本  0.0.0.0  到 255.255.255.255

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

    arp协议:

      地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。   

      主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。   

      收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  传输层

    传输层的由来:网络层的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 @   临江沂水  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示