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

    一、软件开发架构

    1.c/s架构(client/server)

    c:客户端

    s:服务端

    c/s架构主要运用于如QQ这样的应用程序,只有QQ相关方面的功能

    2.b/s架构(brower/server)

    b:浏览器

    c:服务端

    b/s架构主要是运用于浏览器这样的应用程序,因为我们可以通过浏览器这个程序来访问网页上的资源,

    目前如支付宝,微信这样的应用程序里都会有其他应用程序的功能,这也是使用了b/s架构

    服务端:24小时不间断提供服务
    客户端:需要使用的时候就会向服务端发起请求,服务端就会给客户端提供服务

     

    二、网络编程发展史

    任何先进的技术最早都来源于军事,

    想要实现远程通信第一个具备的条件时需要物理连接介质(笔记本电脑需要网卡这个物理介质)

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

     

    三、OSI协议

    OSI七层模型

    OSI七层协议

    应用层
    会话层
    表示层
    传输层
    网络层
    数据链路层
    物理连接层

     

    1.物理连接层

    基于电信号传输01010110101二进制数据

    2.数据链路层

    ①规定电信号的分组方式

    ②规定了任何一台接入互联网的计算机都必须有一块网卡,每一块网卡都刻着世界上独一无二的编号

    网卡上具有12位16进制数:

    前六位是厂商编号

    后六位是流水线编号

    这12位数又称为mac地址

    结合以上两点合称为“以太网协议”

    交换机就是基于“以太网协议”通信的,不能跨局域网通信

    互联网就是由n个局域网彼此连接组成的

    早期:联机

    以太网:局域网与交换机

    3.网络层

    IP协议

    规定了只要是接入互联网的计算机都必须有一个IP地址,用来唯一标识接入互联网的一台计算机

    IP地址的特点:点分十进制,点分十进制就是IPV4的IP地址表示方法,

    IPV4中用4个字节表示一个IP地址,每个字节按十进制表示为0~255,

    也就是用4个从0~255的数字,来表示一个IP地址,如192.168.1.1

    IP地址最小:0.0.0.0

    IP地址最大:255.255.255.255

    IP地址有两个版本:IPV4 IPV6

    IP地址是动态分配的:当启动计算机的时候,计算机会获取一个IP地址,如果重启了又会重新获取新的IP地址

    4.传输层

    计算机与计算机之间其实就是应用程序与应用程序之间的通信

    TCP/UDP都是基于端口工作的协议

    端口(prot):设备与外界通讯交流的出口,用来唯一标识一台计算机的某个应用程序

    端口的范围:0~65535

    通常0~1024都是操作系统默认使用的端口号,建议使用8000之后的端口

    MYSQL默认端口:3306

    Redis默认端口:6379

    django默认端口:8000

    flask默认端口:5000

    端口号也是动态分配的,某个应用程序第一次启动端口号是8666,

    如果将此程序关闭,再次启动,那么它的端口号又会改变

    5.应用层

    HTTP协议

    FTP协议

     

     

    TCP协议

    流式协议,可靠协议

    基于TCP协议通信必须先建立双向通道

     

    TCP协议传输数据之所以可靠的原因在于双向通道吗?

    不对,是因为它有一个反馈机制

    比如客户端需要请求服务端发送某个东西,客户端收到了会返回消息告诉服务端,如果客户端没有返回消息给客户端,服务端中还备份了客户端所需要的东西,那么服务端会在一定的时间内每隔一段时间在次发消息给客户端,直到客户端回消息告诉服务端,如果在这一定的时间内客户端还没回消息,那么服务端回自动删除这个东西。

     
    三次握手与四次挥手

    三次握手连接:

    首先,客户端访问服务端,需要建立一个通道,那么服务端建立一个通向客户端的通道,在建立通向客户端的同时还需要建立一个回应客户端的通道,所以在通向客户端的通道与回应客户端的通道可以合并成一条通道,同时进行;

    那么客户端收到服务端的消息也需要回应服务端,所以还需要建立一条回应服务端的通道,

    所以就是三次建立连接。

    四次挥手连接:

    首先,客户端已经不需要从服务端获取数据了,就会建立一个通道告诉服务端,服务端也会建立一个通道回复客户端,所以第一条通信通道就断了;

    然后服务端还会检测是是否还有未发完的数据,然后将数据发送给客户端,客户端收到后会回复服务端,断开第二次连接。

     

  • 相关阅读:
    各个版本的iPhone SDK下载地址
    [置顶]JavaScript类型总览(图)
    自定义UIPageControl 控件(一)
    用自定义协议调用自己的程序
    【Android游戏开发二十六】追加简述SurfaceView 与 GLSurfaceView效率!
    【Cocos2d游戏开发之三】CCScene切换的所有特效(27种)以及设置屏幕横竖屏!
    【Cocos2d游戏开发之五】多触点与触屏事件详解(单一监听、事件分发)
    【Cocos2d游戏开发之六】对触屏事件追加讲解,解决无法触发ccTouchMoved事件[重要!]
    使用UIView实现自动登录
    苹果推送通知服务(APNs)编程
  • 原文地址:https://www.cnblogs.com/xiongying4/p/11311814.html
Copyright © 2011-2022 走看看