网络编程

软件开发架构

  C/S架构(client/server)

    C: 客户端

    S: 服务端

  客户端: 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖比较大

  B/S架构(Browser/server)

    B: 浏览器

    S: 服务器

  Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需要在浏览器上通过HTTP请求服务器端相关的资源,客户端Browser浏览器就能进行增删改查

  Ps: bs架构本质也是cs架构

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

客户端: 什么时候需要服务,就什么时候去找服务端寻求服务

网络编程的发展史

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

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

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

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

OSI协议

  OSI七层协议

    应用层

    表示层

    会话层

    传输层

    网络层

    数据链路层

    物理连接层

  OSI五层协议

    应用层

    传输层

    网络层

    数据链路层

    物理连接层

1.物理连接层

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

2.数据链路层

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

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

    每一块网卡都刻有独一无二的编号(MAC地址)

      12位16进制数: 前6位是厂商编号,后6位是流水线编号

  PS: 以上两点合称为"以太网协议"

  交换机

   基于以太网协议通信,不能跨越局域网通信

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

3.网络层

  IP协议

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

    IP地址的特点:点分十进制

    IP地址最小:0.0.0.0   IP地址最大:255.255.255.255

    IP地址目前有两个版本:IPV4 和 IPV6

    IP地址是动态分配的

4.传输层

  TCPUDP都是基于端口工作的协议

  端口(port)

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

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

  端口号的范围: 0~65535

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

  MYSQL默认端口号:3306      Redis默认端口号:6379   Django默认端口号:8000   flask默认端口号:5000

  端口号是动态分配的

    假设第一次QQ分配到的是8989,将QQ关闭再次启动端口号可能就改变了

  总结:

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

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

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

5.应用层

  HTTP协议   FTP协议

TCP协议又称流式协议,可靠协议,基于TCP协议通信,必须先建立双向通道

TCP传输数据可靠的原因在于它有反馈机制,发送消息之后对方必须回复确认收到消息才会将数据从内存中清空,否则在限定的时间内会每隔一段时间发送一次

洪水攻击: 服务器在同一时间接收到了大量的请求

原文地址:https://www.cnblogs.com/KrisYzy/p/11311100.html