01 网络编程

一、软件开发架构

1.1 CS架构

c:client   	客户端
s:server 服务端

理解:

将客户端看成是去店里消费客人
将服务端看成是提供服务的店面
eg:收集各种app其实就是各大软件的客户端

三大特征:

服务端需要具备的三大特征
1.24小时不间断提供服务(24小时监听)
2.固定的地址(IP地址)
3.能够服务多个用户(高并发)

1.2 BS架构

b:browser	浏览器
s:server 服务器

理解:

浏览器统一充当各个服务端的客户端
本质:bs架构本质上也是cs架构
统一:各大互联网巨头正在做的事情
eg:
微信小程序(微信提供开发微信小程序的软件)
支付宝小程序(各大程序接口)

总结:

网络编程学习完就可以开发cs架构的软件(简易版本)
并发编程、前端、数据库、后端框架就可以开发bs架构软件(任何类型的软件)

二、网络理论前戏

2.1 简介

网络编程其实研究的就是程序之间的数据通信

由来:基于远程传输数据的技术最早诞生于美国军方(前沿技术通常都是由军事产生)

远程数据传输发展史(民用)
1.有线电话 电话线互联
2.无线电话 信号发射器
3.大屁股电脑 网线
4.笔记本电脑 网卡
...

2.2 常见硬件

交换机:能够使接入该机器的所有计算机之间彼此互联
局域网:有交换机组成的网络
互联网:可以简单的理解为是多个局域网之间彼此互联
"""
基于mac地址的数据传输
1.广播风暴
2.mac地址不能跨局域网传输
"""
路由器:能够连接多个局域网并实现局域网之间的数据传输
"""要想实现远程数据交互的前提是必须要有物理连接介质"""

除了有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西(标准),即OSI七层协议。
OSI七层协议由此引出,下面进行详细解释。

三、OSI七层协议(五层)

简介:

OSI:Open System Interconnection Reference Model
开放式系统互联通信参考模型,说人话就是一个网络互联模型。

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



每层运行常见的物理设备



升华理解:

3.1 七层协议

所有的计算机都必须要有这七层

应用层:是参考模型的最高层。主要功能是:为应用软件提供了很多服务,比如文件服务器、数据库服务、电子邮件与其他网络软件服务。

表示层:是参考模型的第六层。主要功能是:用于处理在两个通信系统中交换信息的表示方法,主要包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。
也就是将图片等数据用计算机代码表示出来。 会话层:是参考模型的第五层。主要功能是:负责维扩两个结点之间的传输连接,以便确保点到点传输不中断,以及管理数据交换等功能。(API接口)
比喻:饿了么、美团用微信、支付宝支付的例子 传输层:是参考模型的第四层。主要功能是:向用户提供可靠地端到端服务,处理数据包错误、数据包次序,以及其他一些关键传输问题。传输层向高层屏蔽了下层数据通信的细节。因此,它是计算机通信体系结构中关键的一层。(TCP稳、 UDP快)
'''还有一个作用就是:给数据包打上端口号''' 网络层:是参考模型的第三层。网络层负责IP地址,主要功能是:为数据在节点之间传输创建逻辑链路,通过路由选择算法为分组通过通信子网选择最适当的路径,以及实现拥塞控制、网络互连等功能。
比喻:相当于快递公司的大卡车,将快递送到分公司的分拣点。
'''作用就是:给数据包打上ip地址,并且进行路由转发。''' 数据链路层:数据链路层则负责MAC位址
四参考模型的第二层。主要功能是:在物理层提供的服务基础上,在通信的实体间建立数据链路连接,传输以“帧”为单位的数据包,并采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据链路。
比喻:相当于快递小哥,直接将快递送到你手上。
MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。 物理连接层:是参考模型的最低层。该层是网络通信的数据传输介质,由连接不同结点的电缆与设备共同构成。主要跟功能是:利用传输介质为数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输。

3.2 五层协议

开发层面可以归纳为五层


应用层
传输层
网络层
数据链路层
物理连接层 """
从下往上研究 1.物理连接层
提供一个物理连接接口(网线口 无线网卡)
2.数据链路层
1.规定了电信号的分组方式
2.以太网协议
规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数字
12位16进制数
前六位:产商编号
后六位:流水线号
上述的数字也称之为计算机的mac地址(类似于身份证号)
"""

3.3 知识储备(ARP协议、API接口、SDK接口)

ARP协议:

地址解析协议:根据IP地址获取物理地址的一个TCP/IP协议。
将IP地址转换成mac地址(基于网络请求,通过ip向计算机发送请求‘哎,把你mac地址发给我’,这种方式来获得mac地址)

API接口:

API接口,应用(Application)程序(Programming)接口 (Interface)。
相当于银行办理业务的窗口,不需要知道存钱业务怎么运行的,只管对接窗口的工作人员即可。

SDK接口:

SDK可以看作是一组工具包,好比现在说的winSDK编程就是使用winAPI来进行开发,你需要下载SDK并安装,里面包含了必要的API文件和其他工具

3.4 网络层详解

IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识

点分十进制

    # IP地址通常用“点分十进制”表示
IPV4版本
最小 0.0.0.0
最大 255.255.255.255
IPV6版本
能够表示出地球上每一粒沙子 例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)

总结:IP地址能够唯一标识接入互联网的一台独一无二的计算机

公网IP与私网IP
公网IP需要花钱购买并申请
私网IP自带的但是无法直接基于互联网访问

3.5 传输层详解

传输层会涉及到TCP协议与UDP协议,下一节进行解释。

端口协议
范围:0~65535
特性:动态分配
eg:第一次运行微信 系统随机取一个端口号2022
然后关闭微信重新启动 系统随机取一个端口号
端口号基本使用
0~1024系统默认需要使用的端口号
1024~8000常见软件端口号
以后我们开发的软件最后使用8000之后的端口号 # 端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序

端口号在同一台计算机同一时刻不能重复,一个软件对应一个端口号。

总结:ip+port 能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序

四、TCP协议

简介:

流式协议 可靠协议

三次握手	建立链接
重要状态
listen监听态:等待对方发请求
syn_rcvd态:忙于恢复确认建立请求
# 洪水攻击:服务端在同一时间接收到了大量的要求建立链接的请求 四次挥手 断开链接
不能合并成三次

4.1 三次握手

就控制为来说,也是具有唯一性的。
第一次:SYN
第二次:SYN+ACK
第三次:ACK
两边不仅可以通过序号和确认号,还可以根据控制位来区分进行到哪个步骤,丢弃一些不必要的报文。

4.2 四次挥手

其实中间的ACK和FIN+ACK这两步,就足以证明为什么要四次挥手了,因为还可能存在未发送完的数据。

五、UDP协议

简介:

不可靠协议

数据发送没有通道的概念 发送出去了就不管了

"""
TCP协议相当于打电话 你一句我一句 你侬我侬
UDP协议相当于发短信 发了就完事 管你看不看
"""
早期的QQ使用的就是UDP

01网络编程(基础知识+OSI七层协议+TCP与UDP)的更多相关文章

  1. 网络编程简介(OSI七层协议,TCP协议原理,三次握手与四次挥手)

    目录 网络编程 软件开发架构 C/S架构 B/S架构 网络编程的发展史 互联网协议 1.物理连接层 2.数据链路层 3.网络层 4.传输层 5.应用层 三次握手四次挥手 三次握手建链接 数据传输 四次 ...

  2. 软件开发架构,网络编程简介,OSI七层协议,TCP和UDP协议

    软件开发架构 什么是软件开发架构 1.软件架构是一个系统的草图. 2.软件架构描述的对象是直接构成系统的抽象组件. 3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯. 4.在实现阶段,这些抽 ...

  3. 计算机网络基础知识-OSI七层协议模型

    一.物理层 物理层主要规定了物理设备的标准,如网线的类型.光纤的接口类型.各种传输介质的传输速率,物理层的数据以比特流(二进制)的形式存在,传输时将比特流转化为电流强弱,达到目的地之后再转化为比特流. ...

  4. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程    1.OSI七层协议    2.基于tcp协议的套接字通信    3.模拟ssh远程执行命令    4.tcp的粘包问题及解决方案    5.基于udp协议的套接字 ...

  5. 网络编程---scoket使用,七层协议,三次挥手建连接,四次挥手断连接

    目录 == 网络编程 == 软件开发架构 网络编程 互联网协议 TCP协议的工作原理 Socket == 网络编程 == 软件开发架构 开发软件 必须要开发一套 客户端与服务端 客户端与服务端的作用 ...

  6. OSI七层协议&TCP协议(三次握手四次挥手)

    今日内容 python 基础回顾 软件开发架构 网络理论前戏 OSI 七层协议(五层) TCP协议 三次握手与四次挥手 UDP协议 内容详细 一.python 基础回顾 1.基本数据类型 整型 int ...

  7. 互联网基础知识------OSI七层网络模型梗概

    OSI七层模型 七层网络结构: 应用层.表示层.会话层.传输层.网络层.数据链路层.物理层 一般也作五层 应用层.传输层.网络层.数据链路层.物理层(实体层) 引申问题:TCP/IP协议与http协议 ...

  8. 网络编程概念 和OSI七层结构简介

    什么是网络编程 网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互链接组成的 编写基于网络的应用程序的过程序称之为网络编程 学习网络编程就是要学习利用网络来与另一台计算机相互传输数据 ...

  9. 网络编程、OSI七层协议

    目录 软件开发架构 1.什么是软件开发架构 2.软件开发架构 3.架构优劣势 4.架构发展趋势 网络编程简介 1.如何理解网络编程 2.网络编程的目的 3.网络编程的意义 4.网络编程的起源 5.网络 ...

随机推荐

  1. python pathlib模块(面向对象的文件系统路径)

    该模块提供表示文件系统路径的类,其语义适用于不同的操作系统 导入Path类: 获取当前目录的绝对路径: 返回当前目录的路径对象 路径拼接 os与PurePath/Path函数映射表 来自为知笔记(Wi ...

  2. 初识python: 自定义函数

    什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 函数的定义方法: def test(x): '函数定义方法' x+=1 r ...

  3. nginx中请求大小的限制的设置

    Nginx对客户端请求缓冲区大小有个默认限制,如果超过了该值(比如在上传大文件时),会报500错误. 只需要设置三个值,就可以解决该问题: 1. client_body_buffer_size: 指定 ...

  4. Linux的六种查找命令

    http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html 1. find fi ...

  5. debian8.4系统安装后的一些设置

    1.添加软件源  su到root用户vi  /etc/apt/sources.list      也可用gedit  /etc/apt/sources.list   (gnome下用,如果kde下则用 ...

  6. Leetcode算法系列(链表)之两数相加

    Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将 ...

  7. Java带包结构调用命令行运行编译

    原文: https://www.toutiao.com/i6491809562037846542/ 带包结构调用命令行运行编译. 记事本编写两个简单的类 文件结构目录 启动DOS,进入文件所在目录 分 ...

  8. Servlet简单实现开发部署过程

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512008683445027331/ 主要是从下面三个步骤实现我们的预期: (1)构建开发环境: (2)开发Ser ...

  9. 【PTA】6-2 读文章(*) (31 分)

    请编写函数,从文件中读出文章,将其输出到屏幕上. 函数原型 void ReadArticle(FILE *f); 说明:参数 f 为文件指针.函数读出 f 所指示文件中的文章,将其输出到屏幕上. 裁判 ...

  10. 学习javaScript必知必会(6)~类、类的定义、prototype 原型、json对象

    一.定义类:使用的是funciton,因为在js中没有定义类的class语句,只有function. ■ 举例: //定义一个Person类(通过类的无参构造函数定义类) function Perso ...