Python之网络协议

本文探讨了软件开发中基于网络的架构设计,从B/S架构和C/S架构的区别,到TCP/IP协议的七层结构,包括HTTP和HTTPS的使用,以及TCP的可靠性与UDP的快速性。重点介绍了网络编程中的三次握手和四次挥手机制。
摘要由CSDN通过智能技术生成

软件开发架构
网络并发、理论多、记性多

# 网络编程:我们要编写一款基于网络传输的软件

         现在写的项目都不是基于网络的,比如ATM,如ATM 别人不能访问

# 目的:要写一款ATM,然后让所有人都能够访问

              1、需要开发一款客户端,然后让用户在自己的电脑上下载这个客户端

              2、需要有一个服务端,

                       如以ATM为例,用户下载客户端之后,用户需要输入用户名和密码登录,然                              后把用户名和密码提交到服务端做校验,提交到的地方就是服务端


# 客户端服务端存在一定的问题:

        1、当我们需要下载大量的软件的时候,会占用大量的资源

        2、使用起来不方便能用(网就用网)

        3、有人站出来开发了浏览器,浏览器它是一个万能客户端,超级客户端

# 本质上B/S架构也是C/S架构!    当下我们使用的软件架构模式是二者兼有

"""很多的公司开发的软件都是小程序(微信), 为了转换更加容易一些"""

# 扩展:服务端:1. 24小时不间断对外提供服务
                            2. 服务端要有一个公网IP(服务器部署、它就是另外一台计算机,系统:                                       Linux系统, centos、乌班图等)
                            3. 常见的服务器:阿里云、腾讯云、百度云、华为云等

osi七层协议概念
# 上网其实就是上传和下载数据的过程

#  背景:早期世界范围内的计算机是不能够互相通信的,当时的计算只是在'局域网'中通信                   后来呢,世界范围内的计算机也通信了,在广域网中通信,这就是互联网.

# 网络的组成:1、物理链接设备(路由器、交换器、网线等)

                         2、计算机界的英语(互联网通信协议)

# 互联网通信协议(osi七层协议):

       互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功           能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概             念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。

# 协议就是标准:

   七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
    五层划分为:应用层、传输层、网络层、数据链路层、物理层。
    四层划分为:应用层、传输层、网络层、网络接口层     

osi七层协议内容
物理层:是专门用来发送高低电频的,其实就是01二进制

      # 物理层发送电频无意义,需要对发送的电频进行分组,物理层做不了分组

数据链路层:专门用来对物理层发送过来的数据进行分组的

      # 该层使用的以太网协议ethernet

      ethernet:组电信号构成一个数据报,叫做帧,或者叫数据帧

      数据帧的组成:报头head(固定18) 和 数据data(最短46,最长1500)  两部分

                             ● head包含:(固定18个字节)
                                ○ 发送者/源地址,6个字节
                                ○ 接收者/目标地址,6个字节
                                ○ 数据类型,6个字节

# 数据报具体内容:head长度+data长度=最短64字节(16-1518)超过最大限制就分片发送

# Mac地址:

       以太网协议规定,每一个接入互联网的设备都必须要有一个网卡,发送端和接收端的地         址便是指网卡的地址,即Mac地址

Mac地址:每块网卡出厂时都被烧制上一个世界唯一的Mac地址

                      # DC--4A--3E--8A--3C--60

                # 前六位是厂商编号,后六位是流水线号

# 通过一个Mac地址能确定局域网中得唯一一台计算机

网络层: 该层使用的是IP协议,网络层中的数据我们称为是数据包

                        每一个接入互联网的计算机都必须要有一个IP地址

     公网ip:需要购买的,阿里云、腾讯云的,一个公网ip地址,固定不变
     内网ip:192.168开头的地址基本上都是局域网中得ip地址

         # IPv6:十六进制表示法

            如何查看自己的IP地址 :   windows: cmd----->ipconfig
                                                     linux(macOS): ifconfig

     # 其实通过一个IP地址它是可以定位唯一一个局域网

""" IP+Mac地址就能确定世界范围内的唯一一台计算机 """

    # 现在只需要一个IP地址就能够确定唯一一台计算机,那是因为:arp协议

            它够通过你的IP地址计算出Mac地址,归根结底还是:IP+Mac地址

    记忆:本地回环地址:127.0.0.1(你自己的电脑)  
    192.168.1.252 127.0.0.1  localhost (这两个有时候会有区别)

       #   127.0.0.1会找到自己电脑

传输层:该层使用的是TCP协议或者是UDP协议,也称为是端口协议

                       一个端口可以代码一个应用程序

  # 端口的范围:0-65535      

                  1. 0-1024之间的端口号都是系统自己使用的
                  2. 1024-8000,一般是常用软件的端口号
                               MySQL:3306
                               Django:8000
                               flask:5000
                               ...
                  3. 8000-65535,我们自己开发的软件

  # 同一个端口号只能够表示一个正在运行的应用程序,端口号不能够冲突,但是软件一             旦关闭,就会释放出来占用的端口号,别的应用程序就能够使用了.

# 常用软件的端口号:

    应用程序    FTP       TFTP    TELNET    SMTP   DNS    HTTP     SSH      MYSQL

     熟知端口    21,20        69            23           25       53         80         22         3306

   传输层协议   TCP        UDP        TCP        TCP     UDP     TCP      TCP       TCP

应用层:该层就是离用户最近的一层,比如,微信、QQ

Application (App)

           1. 客户端:你想使用什么协议都行,自己开发的软件,协议你自己选择
           2. 浏览器:要用浏览器规定的协议,而浏览器使用的协议恰好事HTTP协议

    # HTTP协议和HTTPS协议

             HTTP协议:是明文传输数据,不安全
             HTTPS协议: 是密文传输数据,安全
            https = http + ssl证书(它是需要申请的,国际机构,公钥、私钥等)

      nginx服务器:配置文件,需要在配置文件中配置一些东西,就能够把你的http改成https

  域名解析:DNS服务器它就是用来解析域名的,域名的本质其实就是IP地址,域名比IP地                       址好记,最终还是需要把域名解析成IP地址

               baidu.com                110.242.68.66
   域名的解析过程:1. 首先会先从本地开始解析hosts文件
                                2. 会去对应平台的域名关系表中取查询

TCP协议和UDP协议
客户端要想给服务端发送消息,肯定需要建立链接       

     三次握手 :  建立链接
     四次挥手 :  断开链接

  # tcp协议也称为是可靠协议(三次握手), 流式协议(发送数据可以分多次发送

 # 一定是客户端先给服务端发送消息,然后,服务端给客户端做返回信息

     # 有个个例,服务端可以先给客户端发送消息,需要使用websocket协议:一般用在即时通                信软件, 客服系统、微信、QQ等都是

# 客户端可以是多个的,服务端(饭店)只有一个

# 三次握手就是给C和S提供双向通道传输数据 

# 面试题:
    1. TCP协议的可靠性,是因为建立了双向通道?
            不是。是因为TCP协议的反馈机制(听得到回应)才可靠,不是因为通道
    2. 四次挥手能不能省略为三次挥手?

            如果中间立刻断掉会造成数据的丢失,因此不能变成三次挥手

# UDP协议:它不可靠、是因为它不建立链接,没有三次握手、四次挥手
                      速度快
              远程控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值