Python学习 :网络通信要素
网络通信
OSI 模型
- 定义了计算机互联的标准,是设计和描述计算机网络通信的基本框架
- 把网络通信的工作分为7层,分别是物理层、链路层(数据网络层)、网络层、传输层、会话层、表示层和应用层

网络通信的三要素
- IP 地址
1.用来识别网络上一台独立的主机
2.IP地址 = 网络地址 + 主机地址(网络号:用于识别主机所在的网络;主机号:用于识别网络中的主机)
3.特殊的IP地址:127.0.0.1(本地回环地址、保留地址、点分十进制)可用于简单的测试网卡是否故障;表示主机
- 端口号
1.为了标识应用程序,所以给这些网络应用程序都用数字进行标识,这些数字即为端口
- 传输协议
1.通讯的规则,例如:TCP、UDP协议等
两种不同的传输协议:
- UDP 协议(User Datagram Protocol 用户数据报协议)
面向无连接,传输数据之前源端和目的端不需要建立连接
发送出去的数据不一定会接收得到
传输速率快、效率高
- TCP 协议(Transmission Control Protocol传输控制协议)
面向连接,传输数据之前需要建立连接
在连接过程中进行大量的数据传输
安全可靠的传输协议
传输速度慢、效率低
我们可以通过图片来直观地感受一下 TCP 与 UDP 协议之间的区别

- TCP 与 UDP 的主要区别
1.TCP是面向连接的;UDP是无连接的
2.TCP的每个连接都是点对点的,即一对一进行;UDP的连接支持一对一,一对多,多对一以及多对多
3.TCP的传输比较安全可靠;UDP的传输则不那么可靠
4.TCP的传输比较较慢,但可以保证数据的顺序;UDP的传输速度较快,但不可保证数据的顺序
5.在对系统资源的要求上:TCP占用较多的系统资源;UDP只需少量的系统资源
粘包现象
在同时执行多条命令之后,得到的结果很可能只有一部分数据,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种现象就是粘包。
如何解决粘包问题?
1.获取要传输的数据的大小,先传到客户端,接着再发送数据
2.以数据的大小为基准,循环地接收数据直至获取完毕
Python学习 :网络通信要素的更多相关文章
- Python学习---网络编程 1217【all】
OSI七层模型: 物理层, 数据链路层, 网络层,传输层,会话层,表达层,应用层 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 传输层:TCP,UDP 网络层:I ...
- Python学习笔记总结
目录 Python学习笔记总结 前言 安装 数据类型 Hello,World 变量 字符串 首字母大写 全部小写 全部大写 Tab和换行符 格式化 去除空格 List列表 列表增删改查排序 遍历列表 ...
- python学习第一讲,python简介
目录 python学习第一讲,python简介 一丶python简介 1.解释型语言与编译型语言 2.python的特点 3.python的优缺点 二丶第一个python程序 1.python源程序概 ...
- Python学习笔记,day5
Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...
- Python 学习参考书目推荐
Python 学习,参考书目推荐 前言 好的技术书籍可以帮助我们快速地成长,大部分人或多或少地受益于经典的技术书籍.在「Python开发者」微信公号后台,我们经常能收到让帮忙推荐书籍的消息.这类的问题 ...
- Python学习系列(一)(基础入门)
Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频 ...
- Python学习(二)Python 简介
Python 简介 官方指南及文档 Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr Python3.4官方指南(中文版):http://pan.b ...
- 干货来了!python学习之重难点整理合辑1
关于装饰器.lambda.鸭子类型.魔法函数的理解仍存有困惑之处,趁周末有时间温故,赶紧去自学了解下相关知识. 1.装饰器是什么: 很多初学者在接触装饰器的时候只做到了肤浅的了解它的概念.组成形态.实 ...
- Python面向对象三要素-多态
Python面向对象3要素-多态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 OCP原则:多用“继承”,少修改. 继承的用途:在子类上实现对基类的增强,实现多态. ...
- Python面向对象三要素-继承(Inheritance)
Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...
随机推荐
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- 省事之通用Makefile模版
现在编译方案都偏爱使用cmake解决问题,这两条做unity插件,还是用Makefile,居然忘得光光,好记性不如烂笔头. 后面,翻箱倒柜找到以前为炼金术写的Makefiel,发现还真是挺好用,贴出来 ...
- [BZOJ 3441]乌鸦喝水
3441: 乌鸦喝水 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 374 Solved: 148[Submit][Status][Discuss] ...
- 关于UITableView 不能回调 tableView: cellForRowAtIndexPath的问题
做项目时始终遇到一个问题,tableview不能回调cellForRowAtIndexPath方法,导致cell不能显示. 在网上没找到合理的解决方案. 自己弄了一下,按照自己的推测解决了这个问题 首 ...
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
- 【2】【MOOC】Python游戏开发入门-北京理工大学【第三部分-游戏开发之机制(屏幕绘制机制)】
学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...
- 面向对象的JavaScript --- 封装
面向对象的JavaScript --- 封装 封装 封装的目的是将信息隐藏.一般而言,我们讨论的封装是封装数据和封装实现.真正的封装为更广义的封装,不仅包括封装数据和封装实现,还包括封装类型和封装变化 ...
- 高性能 Socket 组件 HP-Socket v3.2.1-RC3 公布
HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统.提供 C/C+ ...
- TensorFlow学习('utf-8' codec can't decode byte 0xff in position 0: invalid start byte)
使用语句: image_raw_data = tf.gfile.GFile("./picture.jpg", "r").read() 读取图像时报错如下: Un ...
- linux中安装jdk以及eclipse的安装
最近将系统换成了linux(ubuntu14.04),随之而来的是各种软件的配置,环境的配置,因此趁机将自己的过程整理出来. 1:linux中怎么安装jdk 1 首先现在jdk源文件http://ww ...