zoukankan      html  css  js  c++  java
  • 网络编程简介

    网路编程简介:

    什么是网络编程:

      网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互连接组成的,

      编写基于网络的应用程序的过程称之为网络编程

    那么为什么要学习网络编程:

      我们已经知道计算机,由操作系统,应用程序组成,有了这三个元素,就可以在自己的电脑上运行一些应用程序了,比如玩玩纸牌,扫扫雷什么的,只能玩单机的游戏

      如果想要与其他计算机一起玩,就必须要让你的计算机和其他计算机能够互相传递数据

    学习网络编程就是要学习利用网络来与另一台计算机相互传输数据,开发出支持网络通讯的应用程序,这样就可以足不出户也可以知天下事


    软件开发架构:

      C/S架构:

    学习网络编程就是要通过网络来访问另一台计算机的数据,这样必然需要至少俩台计算机,一台计算机上放着要分享的数据和用于分享的数据的程序,另一台计算机上运行访问数据的程序,

    我们把提供数据的一方称之为服务器(server),把访问数据的一方称之为客户端(client)

    这就是C/S架构  

    电脑上要看视频就需要装看视频的程序.例如腾讯视频,它就是客户端程序,腾讯公司的机房里运行着腾讯视频的服务器程序,所以它也是C/S构架的程序

    另外浏览器也可以访问服务器上的网页数据,称之为B/S,其本质上也是C/S只不过客户端是浏览器

    总结:

      C/S架构(client/ server)

      c:客户端

      s:服务端

      B/S结构(browser / server)

      b:浏览器

      s:服务器

    注意:bs结构本质上也是cs结构

    手机端看上去cs结构比较火,实际上bs已经崛起了,

    微信支付宝都在做一件事:统一接口

    服务端:24小时不间断提供服务

    客户端:什么时候想体验服务,就去找心仪的服务端寻求服务

    网络通讯协议:
    俩台计算机想要通讯的话,必须具备俩个基本要素

    1.物理连接介质,包括网线,无线电,光纤等

    2.通讯协议

    1.物理连接介质

    比如说电话机 要打通电话则必须先接通电话线,电流才能沿着电话线到达另一台电话机,电话线则是物理介质

    2.通讯协议:

    协议就是标准,大家都要遵循相同的标准才能正常交流通讯

    比如说俩个人要交流,必须说双方都能理解的语言,不然你说你的语言,我说我的语言,双方都听不懂,人要想实现无障碍交流必须说统一的语言 >>> 英文

    **计算机与计算机之间要想实现远程通信除了有物理连接介质之外还需要
    有一套公共的标准/协议

    OSI七层模型:
    应用层
    表示层
    会话层
    传输层
    网络层
    数据链路层
    物理连接层

    为了方便记住,而简化了一下,变为OSI五层模型
    应用层
    传输层
    网络层
    数据链路层
    物理连接层

    1.物理连接层:
      基于电信号传输010101001的二进制数据

    2.数据链路层
      1.规定了电信号的分组方式
      2.规定了任何一台接入互联网的计算机都必须有一块网卡,
      每一块网卡上面都刻有世界上独一无二的编号
      12位16进制数
        前六位是厂商编号
        后六位是流水线编号
      我们管这12位数叫做mac地址
      注意:以上俩点合成为‘以太网协议’

    3.网络层:
      
    IP协议
    规定了只要是接入互联网的计算机都必须有一个IP地址
    ip地址特点:点分十进制
    ip地址最小:0.0.0.0
    ip地址最大:255.255.255.255
    ip地址目前有两个版本:IPV4 IPV6(由于IPV4已经不够表示目前存在的计算机了 所以推出了IPV6版本)
    IP地址是动态分配的
    4.传输层
    TCP/UDP都是基于端口工作的协议
    端口(port)
    计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
    端口:就是用来标识一台计算机上的某个应用程序
      端口号的范围:0~65535
      注意:0~1024这些都是操作系统默认使用的端口号
      建议:使用8000之后的端口
      MySQL默认端口:3306
      Redis默认端口:6379
      django默认端口:8000
      flask默认端口:5000
    端口号是动态分配的,比如说第一次启动qq分配的是8989端口号,将qq关闭再次启动端口号可能就变了
    总结:
    ip地址:是用来唯一标识接入互联网的一台计算机
    port端口:用来唯一标识一台计算机上的某个启动的应用程序
    ip+port:唯一标识接入互联网一台计算机上的某个启动的引用程序


    5.应用
    http协议 ftp协议









    数据传输传输层
      TCP协议
        流失协议,可靠协议
        基于TCP协议通信,必选先建立双向通道
    为什么说是可靠协议,因为tcp传输数据的可靠原因在于他有反馈机制,
    因为发送数据的一方必须等到接收方的响应,才会删除内存中的数据,
    没有响应的话则不会删除,会每隔一段时间就发一次,一直等到有响应后才会删除内存中的数据


    三次握手:

    三次握手的过程实际上实在确认我发的你能收到,你发的我也能收到,从而保证数据传输的的可靠性,

    链接是一个虚拟的概念,不实际存在,只要三次握手成功即表示连接建立成功!

    问题是三次握手时的确能保障数据传输是可靠的,那么握手后的数据要如何保证传输成功呢?

    TCP协议要求在发送数据后,必须接收到对方的回复信息才能确认数据成功发送,如果一段时内没有收到回复信息,会自动重新发送,如果重试的次数过多则表示链接可能已经中断!


    四次挥手:


    四次挥手的目的是保证双方的数据传输已经全部完成,同样是为了保证数据的完整性

    四次挥手中间的俩步是不能合并的,因为服务端需要检测是否还有未发玩的数据

    总结

    其优点很明显:能够保证数据传输是完整的

    缺点:由于每次都需要传输确认信息,导致传输效率降低

    场景:多用于必须保证数据完整性的场景,例如文本信息,支付信息等!




      

     

  • 相关阅读:
    算法练习(16)-水平翻转一颗二叉树
    算法练习(15)-设计1个二叉树的序列化与反序列化实现?
    算法练习(14)-二叉树中2个节点的最近公共祖先?
    算法练习(13)-打印纸条对折的折痕类型(凹痕?凸痕?)
    算法练习(12)-二叉树的递归套路
    算法练习(11)-二叉树的各种遍历
    算法练习(10)-求2个(可能有环的)单链表的相交节点
    算法练习(9)-复杂带随机指针的单链表
    mac升级后第三方下载程序无法打开cannot be opened because the developer cannot be verified的解决办法
    算法练习(8)-判断单链表是否回文链表
  • 原文地址:https://www.cnblogs.com/zahngyu/p/11311687.html
Copyright © 2011-2022 走看看