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. scp 文件传输

    1.推送 scp -r imageAPP/ root@ip:/data/soft/ 本地当前文件下的 imageAPP文件 推送到ip服务器 /data/soft/ 目录下 2.拉取 scp -r r ...

  2. 微信小程序开发 --- 小白之路 --- 心得

    1.前言 今天 ,发现我的饭卡不见了....悲催 ,看了一下学校的微信小程序,查了下我这饭卡的流水记录,嗯...最后出现的地方在洗澡房... 好吧,扯远了,虽然没找到,可是突发奇想 ,小程序挺方便的, ...

  3. C语言考题:输入一个字符串,将此字符串中特定的字符删去后, 显示新的字符串,要求用函数来完成删去字符的操作。

    #include <stdio.h> #include <string.h> /*此题只需要删除单个字符,比较简单.相信大家也能做出来的.我这个也是可以实现的.只是加了两个判断 ...

  4. 微信小程序配置域名的时候提示“校验文件验证失败”

    在微信小程序后台配置web-view的业务域名跟扫普通链接二维码打开小程序两项功能时, 一直提示"校验文件验证失败,请下载校验文件,上传到服务器指定的目录" 实际访问校验文件的路径 ...

  5. 前端 vue 等刷新清浏览器缓存的方法

    vue开发过程中发现内存一直往上飙,360时不时的提示下清理内存,测试发现每刷新一次页面内存就增加1%. 清掉浏览器的缓存等各种数据以后内存明显变小,刷新页面导致内存爆表. 这种问题着实不应该存在,记 ...

  6. mysql按照时间分组查询

    mysql 按年.月.周.日分组查询 1.按照年份分组查询 SELECT DATE_FORMAT(t.bill_time,'%Y') month_time,sum(t.pay_price) total ...

  7. Android函数抽取壳的实现

    0x0 前言 函数抽取壳这个词不知道从哪起源的,但我理解的函数抽取壳是那种将dex文件中的函数代码给nop,然后在运行时再把字节码给填回dex的这么一种壳. 函数抽取前: 函数抽取后: 很早之前就想写 ...

  8. golang中bufio和ioutil的使用

    bufio bufio包实现了带缓冲区的读写,是对文件读写的封装 bufio缓冲写数据 模式 含义 os.O_WRONLY 只写 os.O_CREATE 创建文件 os.O_RDONLY 只读 os. ...

  9. Servlet-base标签的作用(相对路径和绝对路径)

    Web中的相对路径和绝对路径 在javaWeb中,路径分为相对路径和绝对路径: 相对路径: .     表示当前目录 .. 表示上一级目录 资源名 表示当前目录/资源名 绝对路径: http://ip ...

  10. (转引)数据库索引(MySQL)

    数据结构和算法基础 索引的本质:数据结构,帮助高效获取数据 数据库的查询:最基本的查询算法当然是顺序查找(linear search).二分查找(binary search).二叉树查找(binary ...