网络编程 OSI七层协议

一.网络编程
  1、软件开发架构
  c/s架构
    c:客户端(client)
    s:服务端(service)对外一直提供服务,稳定运行
  b/s架构
    b:浏览器(browser)
    s:服务器(service)

 手机端:好像C/S架构比较火,其实不然,微信小程序,支付宝第三方接口    

  统一接口!  

pc端:b/s比较火    

  本质:b/s其实也是c/s

  2、学习网络编程能做什么?

  网络编程                                      >>>  开发cs架构的软件
  并发编程,前端,数据库,框架 >>>  开发bs架构的软件
 
3. 如何实现远程沟通交流?
  电话插电话线
  电脑插网线
  笔记本电脑无线网卡
 
   要想实现远程通信,第一个需要具备的条件就是:物理连接介质 

不同国家的人交流需要有一个公共的语言作为媒介 >>> 英文

计算机于计算机要想实现远程通信,光有物理连接介质是不够,

他们也需要一个共同的标准   >>> 协议

二.OSI七层协议(模型)

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

  每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件

  

  每层运行常见物理设备

  1、物理连接层:
    实现计算机之间物理连接,传输的数据都是01010的二进制
    电信号工作原理:电只有高低电平

 

 2、数据链路层("以太网协议 ethernet")
    1)规定了二进制数据的分组方式
    2)规定了只要是接入互联网的计算机,都必须有一块网卡!

网卡上面刻有世界唯一的编号:mac地址
  长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号(IEEE分配),后六位是流水线号) 

基于以太网协议通信:通信基本靠吼!!!
  弊端:广播风暴
 
交换机:如果没有交换机,你的电脑就变成了马蜂窝(接口)

    有了交换机之后,所有的电脑只需要有一个网卡连接交换机,即可实现多台电脑之间物理连接

 3、网络层(IP协议
  1)规定了计算机都必须有一个ip地址

  2)IP协议可以跨局域网传输 

  3)ip地址能够唯一标识互联网中独一无二的一台机器!

ip地址特点:点分十进制
  有两个版本ipv4和ipv6 为了能够兼容更多的计算机
  最小:0.0.0.0    
  最大:255.255.255.255

 4、传输层(端口协议)
  TCP,UDP基于端口工作的协议!
  其实计算机之间通信其实是计算机上面的应用程序于应用之间的通信


  端口(port):

    唯一标识一台计算机上某一个基于网络通信的应用程序

    端口范围:0~65535(动态分配)

    注意:0~1024通常是归操作系统分配的端口号

通常情况下,我们写的软件端口号建议起在8000之后:
  flask框架默认端口    5000
  django框架默认端口   8000
  mysql数据库默认端口  3306
  redis数据库默认端口  6379

 注意:一台计算机上同一时间一个端口号只能被一个应用程序占用 

 总结:
    IP 地址:唯一标识全世界接入互联网的独一无二的机器
    port 端口号:唯一标识一台计算机上的某一个应用程序
    ip+port :能够唯一标识全世界上独一无二的一台计算机上的某一个应用程序
 
 补充:
    arp协议:根据ip地址解析mac地址

TCP协议(流式协议,可靠协议)

synchronize同步(请求)|   acknowledge应答(确认)

三次握手建连接

  建立双向通信

  传输数据可靠的原因:

    给对方发消息,对方回复确认收到,传输的数据才会被删除

    否则,会在一定时间间隔之内反复发送,直到对方接收或者超时

四次挥手断连接

  在断开链接的时候,双方都要确认是否还有数据需要发送

洪水攻击:

  服务端大量处于接收连接请求的状态

UDP协议(数据报协议)
  无需建立双向连接,并且传输数据不可靠,可能会出现丢包的情况
  通信速度比较快,但是发送的数据不会在内存中保留!
qq用的就是udp协议

5、应用层(HTTP协议,FTP协议

用户使用的都是应用程序,均工作于应用层,互联网是开放的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式 

应用层功能:规定应用程序的数据格式。

例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。

  那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了“应用层”。

 

6、 socket

两个进程如果需要进行通讯最基本的一个前提是能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程;

但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

 

posted @ 2019-04-29 16:18  zhoyong  阅读(257)  评论(0编辑  收藏  举报