网络协议

1. C/S、B/S 架构

C:client端   B:browse浏览器   S:server 端

1.1 C/S 架构:

​ 基于客户端与服务端之间的通信。 如QQ、抖音等。

​ 优点:满足个性化设置,响应速度快。

​ 缺点:开发成本、维护成本高,占用空间,用户固定。

1.2 B/S 架构:

​ 基于浏览器与服务端之间的通信。 如360、谷歌浏览器。

​ 优点:开发、维护成本低,占用空间相对低,用户不固定。

​ 缺点:功能单一,没有个性化设置,响应速度慢一些。

2. 网络通信原理

​ 1. 两台计算机要有一堆连接介质连接;

​ 2. 需找到对方计算机软件位置;

​ 3. 遵循互联网通信协议。

3. OSI七层协议(TCP/IP五层):

结构:应用层(应用层、表示层、会话层)、传输层、网路层、数据链路层、物理层

3.1 物理层:

​ 介质:光缆、双绞线(网线)、无线电波等。

​ 主要是基于电器特性发送高低电信号(1,0) 也叫比特流 010101110...

3.2 数据链路层:

​ 对电信号(比特流)进行分组,定义了分组方式。

3.2.1 以太网协议:

​ 对比特流进行合理的分组。按每一帧分割。

​ 一组电信号(比特流)数据构成一个数据报,叫做“帧”。

​ 每一个数据帧:由报头head和数据data组成。

​ 每帧最短64字节,最长1518字节,超过就会分片发送。

head data
固定18个字节(源地址6字节、目标地址6字节、数据类型6字节) 46—1500字节

3.2.2 mac地址:(物理地址)

​ 计算机上网卡上标注的地址(计算机地址)。

​ 12位16进制数组成表示(前六位是厂家编号,后六位是流水线号)。

​ 每帧的结构:源mac地址 目标mac地址 数据类型 | data

3.2.3 计算机通信方式:

​ 同一个局域网内,通过广播的形式通信。 局域网所有的计算机都能接受消息、分析消息。是否是找'我'(mac地址)的,不是就会丢弃。

​ 只能在局域网内进行广播。范围太大,会造成广播风暴,效率极低。

3.2.4 交互机的mac地址学习功能:

​ 前提:知道目标的mac地址。 在同一局域网下,第一次发消息是以广播形式,当交互机的接口记录到每个计算机的mac地址后,再发消息就是单播模式。

​ 单播:是一个单个的发送者和一个接受者直接通过网络进行的通信。

​ 广播:“一对所有”的通讯模式。

3.3 网络层:

​ 互联网是由一个个彼此隔离的小的局域网组成的。

​ 功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。

3.3.1 IP协议

​ 能够确定局域网(子网)的位置。

​ 规定网络地址的协议叫Ip协议,它定义的地址称为IP地址,广泛采用IPV4,它规定网络地址由32位2进制表示。 范围为:0.0.0.0 ~255.255.255.255

​ 一个IP地址通常写成 四段十进制 , 如:192.168.14.144

IP地址分为两部分: 网路部分:标识子网

​ 主机部分: 标识主机

子网掩码:表示子网络特征的参数,中国是C类子网掩码:255.255.255.0

​ IP地址与子网掩码的二进制码分别进行AND(与)运算,就可判断两个IP地址是否在同一局域网(子网、网段)下。

​ 192.168.14.0 网关地址被占用

​ 192.168.14.255 广播地址被占用

​ 以上三个都属于192.168.14.0的局域网,一个局域网可连254台计算机。

3.3.2 ARP协议

​ 在实际情况中,我们无法知道目标的mac地址,因此需要通过一定的方法获取。

ARP协议可以从对方的IP地址获取到对方的mac地址 。

​ ARP协议功能:广播的方式发送数据包,获取目标主机的mac地址。

源mac地址 目标mac地址 源IP地址 目标IP地址 数据部分
发送端 发送端mac FF:FF:FF:FF:FF:FF 192.168.14.144 192.168.14.20 data

​ 第一次发消息:发送到交互机——>路由器:广播形式发出。 目标计算机接收到信息时,会返回消息,将自己的mac地址传回。

3.4 传输层

​ 端口协议:能够确定软件在计算机的位置。

​ 有65535个端口;0~1023操作系统专门使用的端口; 3306是数据库端口; 自己开发软件都是8080以后的端口号。

3.4.1 UDP协议(User Datagram Protocol):

​ 用户数据报协议:不可靠的、无连接的传输协议,传输效率高、面向数据包,尽最大努力服务,无拥塞控制。应用:域名系统(DNS),视频流,QQ, 微信。

3.4.2 TCP协议 (Transmission Control Protocol)

​ 可靠的、面向连接的协议、流式协议,传输效率低全双工通信,基于字节流的传输层的通信协议。应用:浏览器、文件传输等。

3.4.3 TCP协议的三次握手和四次挥手

  1. 建立连接(三次握手)

syn: 请求 seq :序列号

TCP三次握手的过程如下:

  1. 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
  2. 服务器端收到SYN报文,回应一个SYN(SEQ=x)和 ACK(ACK=x+1)报文,进入SYN_RECV状态。
  3. 客户端收到服务器端的SYN报文,回应一个ACK(ACK=x+1)报文,进入Established(连接)状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

服务端可以将请求与确认同时传给客户端。

  1. 断开连接(四次挥手)

​ 客户端发送服务端数据时,在数据传输完成后,会马上发出fin=1的请求,主动请求断开连接。但此时,服务端可能还在给客户端传输数据,因此不能同时断开,需服务端在传输结束后,再次请求断开连接。所有共有4次挥手。

TCP四次挥手的过程如下:

建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。

  1. 客户端的应用进程首先调用close,称该端执行“主动关闭”(active close)。客户端的TCP会发送一个FIN(fin=1,seq=y)分节,表示数据发送完毕。
  2. 接收到这个FIN的服务端端执行 “被动关闭”(passive close),这个FIN由TCP确认,并返回一个ACK(ack=1+y),断开一个通道连接。

    ​注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,

    因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
  3. 一段时间后服务端也无数据可发时,服务端的应用进程会调用close关闭它的套接字。这导致它的TCP也发送一个FIN(fin=1,seq=y)分节。
  4. 接收到这个最终FIN的客户端,它的TCP会确认这个FIN,返回一个ACK(ack=1+y),断开另一个通道。

每个方向都需要一个FIN和一个ACK,因此需要4次。

syn洪水攻击:制造大量的假的无效的IP请求服务器,致使正常的IP访问不了服务器。

3.5 应用层

​ 自己定义的协议。

​ 应用层功能:规定应用程序的数据格式。

​ TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

广播(局域网内)+ mac地址(计算机位置)+ IP(局域网位置)+ 端口(软件在计算机的位置)

有了以上四个参数,就可以确定任何一台计算机的软件的位置。

扩展

路由器:

​ 外网(公网)IP:真正能够访问的地址;

​ 内网(局域网)IP:都是虚拟的IP的,由DHCP协议:路由器自动分配IP地址、网关等。

DNS服务器:

​ 域名解析(将网址解析成IP地址以及相应的端口)。

例:描述访问JD网站流程的步骤:

你的电脑输入"www.JD.com"网址,以单播的方式传到交互机,再以单播方式传到路由器,路由器将网址传给DNS服务器进行域名解析,然后将IP地址、接口等信息返回给路由器;路由器会根据据IP地址进行判断。
如果是同一个局域网,则以广播或者单播的形式访问到目标服务器的软件上。
如果不是同一局域网,会经过NPI:IP置换技术,将本机的IP地址换成路由器的IP地址,然后经过路由协议,选取最优的路线;找到目标路由,再以广播或者单播的形式访问到目标服务器的软件上(也可通过端口映射计算,能够直接连接到目标交换机上)。

python 28 网络协议的更多相关文章

  1. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

  2. python模块:网络协议和支持

    python模块:网络协议和支持 webbrowser 调用浏览器显示html文件 webbrowser.open('map.html') [webbrowser - Convenient Web-b ...

  3. Python的网络编程[4] -> DHCP 协议[0] -> DHCP 的基本理论

    DHCP协议 / DHCP Protocol 目录 DHCP 基本理论 DHCP 通信流程 DHCP 完整报文 DHCP 的 Optional 字段 DHCP 的报文类型 1 DHCP 基本理论 DH ...

  4. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器    定义:       ...

  5. 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!

    摘要:在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网 ...

  6. python之旅:网络基础之网络协议篇

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  7. python全栈学习笔记(一)网络基础之网络协议篇

    阅读目录 一.操作系统基础 二.网络通信原理 2.1 互联网的本质就是一系列的网络协议 2.2 osi七层协议 2.3 tcp/ip五层模型讲解 2.3.1 物理层 2.3.2 数据链路层 2.3.3 ...

  8. 27 python 网络基础之网络协议

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  9. Python网络编程(OSI模型、网络协议、TCP)

    前言: 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系. 在数学上,网络是一种图,一般认为专指加权图. 网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类 型的实际问题中抽象 ...

随机推荐

  1. [小米OJ] 7. 第一个缺失正数

    思路: 参考这个思路 即:将每个数字放在对应的第几个位置上,比如1放在第1个位置上,2放在第2个位置上. 注意几个点:将每个数放在它正确的位置,前提是该数是正数,并且该数小于序列长度,并且交换的两个数 ...

  2. Split函数的使用

    Split函数,用来返回一个下标从零开始的一维数组,如下举例说明 1.split(' '),''号中间是空格 def break_words(stuff):    """ ...

  3. 浅析scrapy与scrapy_redis区别

    最近在工作中写了很多 scrapy_redis 分布式爬虫,但是回想 scrapy 与 scrapy_redis 两者区别的时候,竟然,思维只是局限在了应用方面,于是乎,搜索了很多相关文章介绍,这才搞 ...

  4. 我的ubuntu kylin中mentohust的使用历程

    1首先下载mentohus 最新版下载(包括源码):http://code.google.com/p/mentohust/downloads/list 2打开终端(Ctrl+Alt+T) 输入sudo ...

  5. host配置

    host添加地址 今天是我第一天入职,坐到工位的第一件事就是配置host,因为连接测试环境需要本地授权,所以要配置.这里简单记录下配置中遇到的问题和操作的步骤 操作环境是win10,之前公司一直使用的 ...

  6. HelloDjango 系列教程:博客从“裸奔”到“有皮肤”

    文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在此之前我们已经编写了博客的首页视图,并且配置了 URL 和模板,让 django 能够正确地处理 HTTP 请求并返回合适的 ...

  7. powerdesign进军(二)--oracle数据源配置

    目录 资源下载(oracle客户端) 配置 查看系统的数据源 powerdesign 连接数据库 title: powerdesign进军(二)--oracle数据源配置 date: 2019-05- ...

  8. javaScript今日总结

    javascript简单介绍ECMAScript 1.语法 2.变量:只能使用var定义,如果在函数的内容使用var定义,那么它是一个局部变量,如果没有使用var它是一个全局的.弱类型! 3.数据类型 ...

  9. K8S搭建-1 Master 2 Workers(dashboard+ingress)

    本文讲述k8s最新版的搭建(v1.15.2) 分如下几个topic步骤: 各个节点的基本配置 master节点的构建 worker节点的构建 安装dashboard 安装ingress 常见命令 do ...

  10. Go-cron定时任务

    1.cron(计划任务) 按照约定的时间,定时的执行特定的任务(job). cron 表达式 表达了这种约定. cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示. 秒 分 时 日 月 ...