七 网络编程

7.1 C/S B/S架构

7.1.1 认识

Client : 客户端

Browser :浏览器

Server :服务器端

C/S:客户端与服务器之间的构架

B/S:浏览器与服务器之间的架构

7.1.2 特点

C/S

​优点:安全性高,个性化设置,功能全面,响应速度快

​缺点:开发成本高;维护成本高;(基于App),面向用户较固定

B/S

特殊的C/S架构

​优点:开发维护成本低;面向用户较广泛;

​缺点:安全性相对较低,响应速度较慢,个性化设置单一

7.2 互联网通信原理

互联网通信

1.物理介质,通信双方若要通信,首先保证要两端链路相同;

2.确定对端位置

3.通过统一的通信标准进行数据转发

7.3 OSI七层协议(TCP五层)

物理层

​物理介质,包括:中继器、集线器、双绞线

​发送的数据是比特数据流。主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

数据链路层

分组数据:

按照一定的协议对比流数据进行分组

以太网协议:

Ethernet,统一的通信标准;

一组电信号构成一个数据报,叫做帧

帧的组成:报头head和数据data两部分,其中head包括:源地址,6个字节;目标地址,6个字节,数据类型6个字节;data包含:最短64字节,最长1500字节,数据报的具体内容

​问题1:数据头为什么要固定?

​固定的长度就是一个标准,方便提取源地址以及目的地址

​问题2:以太网中源地址如何设置唯一?

​网线直接接触的硬件就是网卡,网卡上有一个mac地址,确定计算机在网络中的唯一性,一个mac地址由12位16进制的数字串(前六位是厂商编号 后六位是流水线号)

广播

​在同一局域网内进行广播,配合以太网协议进行通信 ,范围是在局域网内

单播

端到端进行数据交换

设备:

网桥,以太网交换机,网卡

网络层

寻址、路由选择、连接到建立、保持和终止

IP协议

IP地址+子网掩码,可以确定计算机所在的网段、子网、局域网位置;广播+mac地址+ip == 定位世界上任意一台计算机

IP v4中,规定网络地址由32位2进制表示,范围是0.0.0.0--255.255.255.255,一个IP地址通常写成十进制数

子网掩码:网络部分全为1,主机部分全位0;

IP数据包:head--长度为20到60字节,data--最长为65,515字节

ARP协议

地址解析协议,根据IP地址获取物理地址的一个TCP/IP协议,通过广播的方式将包含IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。

工作流程:

​1.通过IP地址和子网掩码区分子网

场景

数据包地址

同一子网

目标主机mac地址,目标主机IP地址

不同子网

网关mac地址,目标主机IP

​2.如果处于同一网络,将源mac地址,目标mac(FF:FF:FF:FF:FF:FF),源IP地址,目标IP地址封包广播;如果不在同一个子网,将目标IP地址改成网关地址即可。

​3.将arp数据包以广播的方式发送,所有主机都会拆包,检查目的IP地址是否是自己,若果是则响应将自己的mac地址封包发送。

传输层

端口协议,功能就是建立端口到端口的通信。广播+mac地址+ip+端口 == 定位世界上任意一台计算机对应的软件

传输层的功能是建立端口到端口的连接通信,其中端口范围0-65535,0-1023为系统占用端口

TCP 传输控制协议

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议;采用三次握手建立一个连接,采用四次挥手断开连接

三次握手

​第一次握手:客户端向服务端发送syn(syn=x)包,并进入syn_sent状态,等待服务器确认,syn是同步序列编号

​第二次握手:服务端接受请求报文,确认客户的syn(ack=x+1,ack是确认字符),同时向客户端发送一个syn包(seq=y),即syn+ack包,此时服务器进入syn_recv状态

​第三次握手:客户端收到服务端的syn+ack包,向服务端发送确认包ack(ack=y+1),此包发送完毕,客户端和服务器进入established(TCP连接成功)状态,完成三次握手。

四次挥手

TCP连接时双向传输模式,客户端或者服务端都可以主动发起断开连接请求

​第一次挥手:当主动端的应用程序通知TCP数据已经发送完毕时,TCP向被动端发送一个带有fin附加标记的报文段(fin表示英文finish)。

​第二次挥手:被动段收到这个fin报文段之后,并不立即用fin报文段回复主动端,而是先向其发送一个确认序号ack,告诉主动端已接受请求,同时通知自己相应的应用程序:对方要求关闭连接(先发送ack的目的是为了防止在这段时间内,对方重传fin报文段)。

​第三次挥手,被动端的应用程序告诉TCP:我要彻底的关闭连接,TCP向主动端送一个fin报文段。

​第四次挥手,主动端收到这个fin报文段后,向被动端发送一个ack表示连接彻底释放。

为什么建立连接时是三次握手,而断开连接时是四次呢?

​建立连接时,当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但断开连接时,当收到对方的FIN报文时,被动端不会马上关闭连接,但是会先发送一个ACK包,表示已经接到FIN报文,也就是说对方不再发送数据了但是还能接收数据,被动端是否现在关闭发送数据通道,需要上层应用来决定,因此,被动端的ACK和FIN一般会分开发送。

为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

​假设网络是不可靠的,最后一个ACK有可能丢失。所以TIME_WAIT停留的2MSL给重发可能丢失的ACK报文预留的时间。

UDP协议

协议

优点

缺点

TCP

好人协议,流式协议,稳定安全

效率低

UDP

效率高,传输快

不安全,无连接,不可靠

使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP),微信qq语音

应用层

在TCP五层协议中,将OSI中的会话层,表示层,应用层统一表示为应用层

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

python 网络维护_python学习之网络基础相关推荐

  1. python硬件驱动_Python学习:计算机基础之计算机硬件

    本节重点: 1.编程语言的作用及与操作系统和硬件的关系: Python是编程语言,简之,Python即语言. 语言有汉语,外语,是人与人之间沟通交流的介质,编程语言即人与计算机之间的语言,目的是为了让 ...

  2. 网络黑客攻防学习平台之基础关第三题

    网络黑客攻防学习平台之基础关第三题 : 页面地址:http://hackinglab.cn/ShowQues.php?type=bases 给出的是一段base64加密后的密文,根据标题,肯定是多次加 ...

  3. python网络编程需要学什么,python网络编程学习笔记(五):socket的一些补充 Python 网络编程需要学习哪些网络相关的知识...

    python的socket编程问题hdr = recvall(s, 5) if hdr is None: print 'Unexpected EOF receivingstruct在unpack的时候 ...

  4. 网络安全特训之——网络信息安全攻防学习平台(基础关)

    网络信息安全攻防学习平台(基础关) 一.key在哪里 项目场景: 解决方法: 二.再加密一次你就得到key啦 项目场景 解决方法: 三.猜猜这是经过了多少次加密 项目场景: 解决方法: 四.据说MD5 ...

  5. 网络黑客攻防学习平台之基础关第十一题

    网络黑客攻防学习平台之基础关第十一题 : 本地的诱惑 小明扫描了他心爱的小红的电脑,发现开放了一个80端口,但是当小明去访问的时候却发现只允许从本地访问,可他心爱的小红不敢让这个诡异的小明触碰她的电脑 ...

  6. 网络黑客攻防学习平台之基础关第二题

    网络黑客攻防学习平台之基础关第二题 : 页面地址:http://hackinglab.cn/ShowQues.php?type=bases 题解:加密后的数据再加密一次就得到了密文,这正是rot-13 ...

  7. 网络黑客攻防学习平台之基础关第一题

    网络黑客攻防学习平台之基础关第一题: 页面地址:http://lab1.xseclab.com/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php 解密: ...

  8. 网络黑客攻防学习平台之基础关第七题

    网络黑客攻防学习平台之基础关第七题: key究竟在哪里呢? 上一次小明同学轻松找到了key,感觉这么简单的题目多无聊,于是有了找key的加强版,那么key这次会藏在哪里呢? 通关地址:http://l ...

  9. 深度学习深度前馈网络_深度学习前馈网络中的讲义第4部分

    深度学习深度前馈网络 FAU深度学习讲义 (FAU Lecture Notes in Deep Learning) These are the lecture notes for FAU's YouT ...

最新文章

  1. matlab 极坐标作图polar
  2. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
  3. 语义匹配(一)【NLP论文复现】Sentence-BERT 句子语义匹配模型的tensorflow实现以及训练Trick
  4. 8.1.4 Authentication in a Web Application
  5. 操作excel的一些方法
  6. java默认值_Java中八种基本数据类型的默认值
  7. 所谓高情商就是会说话--总结
  8. 理论基础 —— 栈 —— 顺序栈
  9. 一文让你秒懂互联网TCP/IP协议的深层含义
  10. 闲论排样/排料算法(nesting)
  11. ce修改植物大战僵尸之植物无冷却
  12. postgresql 导出单张表
  13. 小米智能插座接入HomeKit
  14. window无法访问此文件夹,请确保输入的文件名是正确的,并且您有权访问此文件夹
  15. 搭建免费私人服务器---用你的笔记本做服务器
  16. java彩票机选生成
  17. 波士顿房价数据集——预测房价
  18. 产品经理的总结(一)
  19. SpringBoot结合redis解决PV、UV亿级流量
  20. 【LINGO】lingo 软件简介

热门文章

  1. sop8封装尺寸图_详解MOS管封装
  2. 今日问题:如果开发总是延迟提测时间,该怎么办呢?
  3. php程序里的configini_PHP读取配置文件类实例(可读取ini,yaml,xml等)
  4. java 实现复制_在java中如何实现复制,粘贴,剪切
  5. mesh 协调器 路由器_北京无线路由收发器C32MESH
  6. 思路不清晰还想月薪过万?学会这4招,升职加薪有望
  7. hibernate mysql语句_打印hibernate的SQL语句的几种办法
  8. mysql清除旧版本_MYSQL使用INNODB时及时清理旧版本数据
  9. cif t t操作流程图_Danish:STATA 操作正态检验、卡方检验和T检验
  10. php数组排序语言,php数组排序函数有哪些