一.网络开发的两大架构

早期没有网络 a.py -> b.py
a文件把数据放在c文件中,b文件从c文件取
b文件把数据放在c文件中,a文件从c文件取
构成了早期的一种数据的交互原理 -> socket(套接字)模型
socket(套接字)是收发数据的一个工具

后来有了网络
a文件中的数据,可以通过网络协议,转成1010电信号,进行发送
a文件借助socket发送数据
b文件借助socket接受数据

C/S架构: client server
C/S
c -> client 客户端
具体指的是一个软件,像QQ,微信,腾讯会议,DNF,wow,跑跑卡丁车,英雄联盟,消消乐
s -> server 服务器
天河三河 百亿亿次超级计算机
B/S架构
B -> Brower 浏览器
通过输入网址,直接访问对方服务器,对方服务器响应请求之后,
把对方的数据通过网络返回到浏览器中进行显示
S -> server 服务端
b/s 和 c/s 谁代表未来
#b/s
(1) 省去复杂漫长的下载和安装环节,节省了手机和电脑的硬盘空间
(2) 因为手机的便捷性,可以随时随地不受限制的使用各式各样的功能,满足日常需求

二.网络概念

1.ip Windows ipconfig Linux ifconfig

ip地址的最后一位0或者255 两个数字不能用,
一般最后一位0表达的是网段,255代表广播地址

2.网段

主要用来划分同一区域里的某些机器是否能够互相通信
在一个网段里可以不通过因特网,直接对话
判别的依据:
如果IP地址和子网掩码相与得到的值相同就是同一网段

子网掩码:区分网段和主机

# 案例一
# ip 192.168.30.251
# 子网掩码 255.255.255.0
11000000.10101000.00011110.11111011
11111111.11111111.11111111.00000000
11000000.10101000.00011110.00000000  网段
网段:192.168.30.0#ip 192.168.30.33
#子网掩码 255.255.255.0
11000000.10101000.00011110.00100001
11111111.11111111.11111111.00000000
11000000.10101000.00011110.00000000  网段
网段:192.168.30.0
在一个网段可以互相通信# 案例二
# ip 192.168.30.251
# 子网掩码 255.255.0.0
11000000.10101000.00011110.11111011
11111111.11111111.00000000.00000000
11000000.10101000.00000000.00000000  网段
192.168.0.0# ip 192.168.35.211
# 子网掩码 255.255.0.0
11000000.10101000.00100011.11010011
11111111.11111111.00000000.00000000
11000000.10101000.00000000.00000000
192.168.0.0

如果两个ip的网段相同就可以一起通讯
ping + ip 测试是否能够ping通

3.端口:某个程序与外界通讯的出口

范围 0~65535
ip + 端口 访问这个世界上任何一台电脑里面的任何一个应用
常用端口号如下

20 端口:FTP 文件传输协议(默认数据口)
21 端口:FTP 文件传输协议(控制)
22 端口:SSH 远程登录协议
25 端口:SMTP 服务器所开发的端口,用于发送邮件
80 端口:HTTP,用于网页浏览,木马 Executor 开发此端口
443 端口:基于 TLS/SSL 的网页浏览端口,能提供加密和通过安全端口传输的另一种 HTTP
3306 端口:MySQL 开发此端口
自定义端口的时候起一个9000以后的端口号,不要乱用已知的端口号

三.osi 网络七层模型

应用层(应用层,表示层,会话层)
封装数据:
根据不同的协议,封装成对应格式的数据消息
HTTP [超文本传输协议]
HTTPS[加密传输的超文本传输协议]
FTP [文件传输协议]
SMTP [电子邮件传输协议]

传输层:
封装端口
指定传输的协议(TCP协议/UDP协议)

网络层:
封装ip
版本ipv4 ipv6

数据链路层:
封装mac地址
指定链路层协议ARP(ip->mac) / (mac->ip)

物理层:
打成数据包,变成二进制的字节流,通过网络进行传输

交换机:从下到上拆2层,物理层,链路层
路由器:从下到上拆3层,物理层,链路层,网络层

ARP协议:通过ip -> mac(ARP地址解析协议)

“”“通过交换机的一次广播和一次单播找到对应的mac物理地址”""

电脑a先发送ARP的广播包,把mac标记成全FF-FF-FF-FF-FF-FF的广播地址
交换机接收到ARP广播包,从下到上拆2层,到数据链路层得到mac
发现mac是全F的广播地址,重新打包,交换机开始广播,所有连接在这台
交换的设备统一都会收到ARP广播包,开始拆包
如果对应的是全F广播地址,直接跳过,继续向上找,如果ip不对,直接舍弃
路由器允许从下到上拆3层,拆到网络层,得到ip,找到其中的网段
重新把数据打包,发送给对应这个网段的那个接口(网关)
对应的接口设备是交换机,从下到上拆2层,全F广播地址,开始发送ARP广播包
数据库服务器接收到ARP广播包开始拆包,发现要找的机器就是自己.
于是把自己的ip->mac的对照数据返回给对应的交换机
交换机开始单播,让ip->mac的对照数据返回到开始处
原主机接收到了ip->mac的对照关系之后,更新一下自己的ARP的解析表,方便下次使用
到此结束:
ip -> mac

SYN 创建连接
ACK 确认响应
FIN 断开连接

# 三次握手客户端发送一个请求,与服务端建立连接服务端接收请求,发出响应,并且回应也要与客户端建立连接(服务端同意连接的请求 和 服务端与客户端建立连接的请求在一次响应当中完成了)客户端接受服务端的请求之后,把消息在回复响应给服务端.
数据传输客户端每次发送数据时,服务端每次都有响应,发一个回执消息来确认数据所以tcp协议,发送数据不丢包,保证数据稳定.四次挥手客户端向服务端发送一个断开连接的请求(代表客户端已经没有数据可以传输了)服务端接收请求,发出响应等到服务端把所有数据发送或者接收完毕之后服务端向客户端发送断开连接的请求客户端接收请求,并且发出响应(持续2MSL)等待2msl,最大报文生存时间之后客户端与服务端彻底断开连接.

0812Python总结-网络编程相关知识相关推荐

  1. 二十七、GIL及网络编程相关知识

    网络编程相关 一 GIL全局解释器锁 二 GIL与普通互斥锁的区别 三 多线程与多进程区别 3.1 单核 3.2 多核 3.3 代码验证 四 死锁 五 信号量 六 Event事件 七 进程池与线程池 ...

  2. linux 网络编程相关知识

    1:tcp和udp的区别 2:流量控制和拥塞控制的实现机制 3:滑动窗口的实现机制 4:多线程如何同步. 5:进程间通讯的方式有哪些,各有什么优缺点 6:tcp连接建立的时候3次握手的具体过程,以及其 ...

  3. 多实例多进程网络编程PHP,php socket网络编程基础知识(四):多进程

    标签:status   传递   windows   返回   修改   队列   _for   响应   关联 说明 php在web编程时是不需要考虑多进程的,但整个php流程是涉及到多进程的,只不 ...

  4. Linux网络编程基础知识

    Linux网络编程基础知识 1. 协议的概念 1.1 什么是协议 1.2 典型协议 2 网络应用程序设计模式 2.1 C/S模式 2.2 B/S模式 2.3 优缺点 3 分层模型 3.1 OSI七层模 ...

  5. Java面向对象程序开发——网络编程入门知识

    目录 七.网络编程入门知识 软件结构 网络通信协议 协议分类 网络编程三要素 TCP通信程序 概述 Socket类 构造方法 成员方法 ServerSocket类 构造方法 成员方法 简单的TCP网络 ...

  6. 复习Java第二个项目仿QQ聊天系统 03(两种通信类、登录以及注册功能完善) Java面试题并发编程相关知识生活【记录一个咸鱼大学生三个月的奋进生活】025

    记录一个咸鱼大学生三个月的奋进生活025 复习Java(仿QQ聊天系统03两种通信类.登录以及注册功能完善) TcpSocket类(与服务器进行通信) Server类(服务器类) TcpMessage ...

  7. Java 网络编程基础知识

    Java 网络编程基础知识 基础概念 计算机网络的基本概念 ​ 网络:多台计算机使用网络设备互联在一起,计算机之间可以进行通信,这样就组成了一个计算机网络. ​ 网络设备:集线器(HUB),路由器,交 ...

  8. Linux网络编程 | 信号 :信号函数、信号集、统一事件源 、网络编程相关信号

    文章目录 信号函数 信号集 统一事件源 网络编程相关信号 Linux 进程信号:信号的概念.生命周期.产生流程.阻塞 在半年前我写过一篇博客介绍了Linux中信号的概念以及处理流程,这次再来深入的讲一 ...

  9. 视频教程-游戏网络编程必备知识-Unity3D

    游戏网络编程必备知识 网名:海洋,CSDN社区讲师,3D游戏引擎开发者,IT讲师,计算机图形学方向研究生,曾在浙江大学CAD&CG;国家重点实验室学习.从事IT行业15年,主导或参与了18款大 ...

最新文章

  1. Linux文件系统上的特殊权限      SUID, SGID, Sticky(粘之位)
  2. 二分图模板(女生赛要用)
  3. System.Web.HttpRequestValidationException: 从客户端(txtName=fd)中检测到有潜在危险的 Request.Form 值...
  4. python 异步编程——asyncio
  5. oracle扩容bigfile,Oracle10g BIGFILE表空间带来的好处
  6. 红外线人体感应灯arduino_红外线人体感应器的工作原理及电路设计
  7. linux持续检测进程脚本,用于检测进程的shell脚本代码小结
  8. JavaSE--异常信息打印
  9. 官方原版Windows XP SP3(VOL)简体中文版ISO下载
  10. package.json bin的作用
  11. CVE-2017-12635+12636 复现+反弹shell
  12. 哈尔滨学计算机编程学校,哈尔滨中小学生编程学校排名
  13. 服务器被攻击怎么封禁IP
  14. Python3.7在 Geany下编译出现SyntaxError: Non-UTF-8 code starting with '\xb3'错误及实例化方法时提示没有实参的解决方法。
  15. html调用头尾html,合并html头尾 - 基础支持 - 用gulp搭建前后分离的开发环�? - KK的小故事...
  16. FBX导入错误 :ImportFBX Errors:
  17. [MICO开发帖]MICOkit-Nucleo2.0开发连载贴——1、Micoder开发环境汉化
  18. 腾讯云cos申请配置
  19. 脉冲多普勒雷达设计附matlab代码
  20. BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸 动态规划

热门文章

  1. IM即时通讯设计 高并发聊天服务:服务器 + qt客户端(附源码)
  2. php获取上传文件的字节,PHP获取上传文件的md5码
  3. 产品经理值得收藏的博客(持续更新)
  4. python 柱形图 负值_包含负值的柱形图 | JShare
  5. python小游戏————兔子
  6. unity快捷键大全
  7. 一位开发者的幽默独白:JavaScript工具怎么就这么烂
  8. Socket编程之简单介绍 - 蓝天下的雨 - 博客园
  9. leetcode-0015-三数之和
  10. iphone导入通讯录