Python基础---网络编程1

1.C/S,B/S架构

  01.涉及到两个程序之间通讯的应用大致可以分为两种,这些应用的本质其实都是两个程序之间的通讯。第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用,第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用

  02.C/S架构: Client和Server,客户端与服务器端架构,这种架构是从用户层面来划分的。这里的客户端一般指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。

  03.B/S架构: Browser和Server,浏览器端和服务端架构,这种架构是从用户层面来划分的。Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行操作。

2.网络通信原理

  网络通信: 从一台计算机的某个软件将一个数据发送给另一台计算机的对应软件上

  网络通信原理: 必须有一系列的物理连接介质,要能够确定对方的软件位置,还要遵循一系列的互联网协议

  每一台联网的机器在网络上也有自己的地址,是使用一串数字来表示的.

什么是IP地址:

是互联网协议地址(英语:Internet Protocol Address),是IP Address的缩写。
是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址. 是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。 IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0-255之间的十进制整数

例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)

什么是mac地址:

网卡: 计算机出厂时就会有一个网卡,网卡就会有一个mac地址,mac地址是计算机的唯一标识, 
是12位十六进制的一串数字: 34-17-E8-6F-1F-8A,前6位是厂商编号,后6位是生产的流水线号.
查看mac地址: 终端输入 ipconfig/all

什么是端口:

    端口可以认为是设备与外界通讯交流的出口;端口的范围是0-65535,其中0-1023是系统占用端口,
1024-8000是各种应用占用端口,8000-65535可以是我们自定制端口

因此,IP地址可以精确到具体的一天电脑,端口可以精确到具体的程序

3.osi七层模型

   互联网的核心就是由一堆协议组成,协议就是标准.正如我们的普通话,国际上的英语一样,互联网协议就是属于计算机的英语,所有的计算机都学会了互联网协议,那所有的计算机就都可以按照同一的标准来实现通信了.

  按照分工不同吧互联网协议从逻辑上划分了层次等级:可以将应用层表示层、表示层、会话层合并为应用层,所以也可以称之为五层协议.

  物理层: 物理层主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0,只是单纯的发送电平

  数据链路层: 对数据进行分组封包, 包括源mac地址,目标mac地址,数据类型

    早期每个公司对数据都有不同的标准,后来同一标准为以太网协议,以太网协议规定将数据分为两部分:数据头,数据体. 数据头是固定的18个字节: 源mac地址占6个字节,目标mac地址占6个字节,数据类型占6个字节

    理论上有了mac地址,再加上广播的方式,就能实现全世界计算机的通信,但实际上产生了广播风暴,效率低,工作量加大, 于是规定: mac + 广播,只能在局域网中实行

如何确定mac地址呢?
    mac地址有一个自主学习功能:交换机,在交换机中,有一个mac地址和网口的对照表,在同一个局域网内发送一个数据,
就可以直接找到网口对应的mac地址. 步骤:在一个局域网内,
  第一次发送数据,需要用广播的形式,获取目标的mac地址,将mac地址与网口写入交换机的对照表中   第二次发送数据(计算机和网口没有更换):不通过广播,直接通过mac对照表找目标的地址

  网络层: 确认局域网位置, 通过IP协议,寻找到对方局域网的位置,

    IP地址 + mac地址 + 广播,就能确定世界上任何一个计算机的位置

  传输层: 建立端口到端口的通信,遵守端口协议,每个软件都有一个固定的端口

    端口 + IP地址 + mac地址 + 广播,就能确定世界上任何一个计算机的软件的位置

  应用层:是客户感知到的一层,比如手机上的app.每个软件对于数据都有不同的自定制协议,如FTP,WWW等

4.访问网页的具体流程

1.在浏览器中输入网址,先访问该网址的DNS服务器,拿到服务器的ip地址
2.操作系统进行判断,当前计算机ip和服务器ip是否在同一网段
  如果在,先以单播的形式将数据发送给交换机,交换机再通过广播把数据发送给其他的计算机
  如果不在,先将封装好的数据: 源mac地址,目标mac地址,数据类型| ip地址| 端口号| 具体内容,以单播的形式发送给交换机,然后再到网关(路由器ip)3.路由器A做的事情:
3.路由器A做的事情:
  01.利用NAT技术,将计算机ip置换为路由器A网段的ip地址
  02.静态路由: 将数据从路由器A发送到路由器D
    遵守路由协议,利用算法计算出到达目标路由的最短路径
4.数据发送到路由器D
  通过端口映射技术,将数据发送到服务器对应软件的端口上

5.TCP协议,UDP协议

tcp协议(Transmission Control Protocol),是可靠的、面向连接的流式协议,传输效率低,但数据会很安全

udp协议(User Datagram Protocol),是不可靠的,无连接的服务器,传输效率很高,但数据的安全性较低

6.tcp协议下三次握手,四次挥手

01.建立链接时三次握手

发送syn请求,seq序列号(建立两个通道)
  01.客户端向服务端发起请求, (syn = 1 , seq = 随机数 )
  02.服务端同意客户端请求,并向客户端发起请求(ack = 1 + x  sny = 1 ,seq = 随机数)
  03.客户端同意服务端请求(ack = 1 + 随机数)

 02.断开链接时四次挥手

01.客户端给服务端发送完所有数据后,会马上发一个 fin 请求,fin = 1 ,seq = x
02.关闭了从客户端到服务端的通道 ack = 1 + x
03.此时服务端到客户端的数据还没有发送完毕,需要等服务端将所有数据返回给客户端之后,服务端向客户端发送 fin 请求 fin = 1,seq = y
04.关闭另一个通道 ack = 1 + y

猜你喜欢

转载自www.cnblogs.com/py8318/p/10459072.html