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

    网络编程

    网络编程发展史

    OSI协议

    TCP协议

    网络编程

      软件开发架构

      C/S架构(client/server)

        C:客户端

        S:服务器

      B/S架构(browser/server)

        B:浏览器

        S:服务器

    ps:b/s架构本质也是c/s架构

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

    客户端:不管什么时候想体验服务,都可以去想要的服务端寻求服务

    网络编程的发展史

      所有的先进技术最早都是来源自军事技术

    如果回到过去

      1.早期的电话        电话线

      2.大屁股电脑        网线

      3.笔记本电脑,无线电话   网卡

      想要实现远程通信第一个需要具备的条件是:物理连接介质

      

      人如果想要实现无障碍交流必须说统一的语言 》》》 英语

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

    OSI协议

      OSI七层协议(互联网协议按照功能不同分为OSI七层或TCP/IP五层或者TCP/IP四层)

        

    1.物理连接层

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

    2.数据链路层

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

      2.规定了任何一台接入互联网的计算机都必须有一块网卡

      每一块网卡上面都刻有世界上独一无二的编号12位16进制数

      前6位是厂商编号

      后6位是流水线编号

      我们管这12位数叫Mac地址

    ps:以上两点合称为‘以太网协议’

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

    互联网是有N多个局域网彼此之间连接而成的

    3.网络层

      IP协议

      规定了只要是接入互联网的计算机都必须有一个IP地址

      IP地址特点:点分十进制

      IP地址最小:0.0.0.0

      IP地址最大:255.255.255.255

      IP地址目前有两个版本:IPV4  IPV6(由于IPV4已经不够表示目前存在的计算机)

      IP地址是动态分配的

    4.传输层

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

      端口(port)

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

      端口:用来唯一标识一台计算机上的某个应用程序

          端口号的范围:0 ~ 65535

      注意:0 ~ 1024这些都是操作系统默认使用的端口号

      建议:使用8000之后的端口号

      MySQL默认端口:3306

      Redis默认端口:6379

      Django默认端口:8000

      flask默认端口:5000

      端口号是动态分配的,一个程序关闭后,再次打开后端口号可能就变了

     

    总结

      IP地址:用来唯一标识接入互联网的一台计算机

      port端口:用来唯一标识一台计算机上的某个应用程序

      IP+port:唯一标识接入互联网一台计算机上的某个应用程序

    5.应用层

      HTTP协议

      FIP协议

    TCP协议

      流式协议,可靠协议

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

      TCP协议传输数据之所以可靠的原因是反馈机制

      

      三次握手四次挥手

      三次握手建立连接

    三次握手的过程如下:

      1.客户端发送syn=n报文给服务器端,进申请建立连接

      2.服务器端收到syn报文,回应一个syn=k,ack=n+1报文,同意建立连接,并申请也建立连接

      3.客户端收到服务器端的syn报文,回应一个ack=k+1报文,两边的连接建立完成。

    三次握手完成之后TCP客户端和服务器端成功连接,开始传输数据。

     

     四次挥手断开连接

    四次挥手过程

      1.客户端发送给syn给服务端申请断开连接。

      2.服务端收到syn报文,回复ack = i+1,同意断开连接。

      3.在这段时间内检测是否还有未发送完的数据,然后回复syn = o给客户端断开连接。

      4.客户端回复ack = o+1给服务端同意断开连接。

  • 相关阅读:
    [Android] 升级了新的android studio之后 发生如下的报错,The following classes could not be instantiated:
    [IOS]译Size Classes with Xcode 6: One Storyboard for all Sizes
    [IOS] 利用@IBInspectable
    [IOS]swift自定义uicollectionviewcell
    [IOS]Swift使用SVGKit的记录
    [IOS初学]ios 第一篇 storyboard 与viewcontroller的关系
    [Android]关于filed 遍历资源文件的排序问题
    [Android]关于Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED ,修改包名
    [Android]用图库打开指定的文件夹,没错是第一个画面直接是图库的文件夹画面
    [Android]新版的sdk中新建一个android应用,增加的PlaceholderFragment这个静态类发生的事情
  • 原文地址:https://www.cnblogs.com/AbrahamChen/p/11311683.html
Copyright © 2011-2022 走看看