网络通信

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学习 :网络通信要素的更多相关文章

  1. Python学习---网络编程 1217【all】

    OSI七层模型: 物理层, 数据链路层, 网络层,传输层,会话层,表达层,应用层 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 传输层:TCP,UDP 网络层:I ...

  2. Python学习笔记总结

    目录 Python学习笔记总结 前言 安装 数据类型 Hello,World 变量 字符串 首字母大写 全部小写 全部大写 Tab和换行符 格式化 去除空格 List列表 列表增删改查排序 遍历列表 ...

  3. python学习第一讲,python简介

    目录 python学习第一讲,python简介 一丶python简介 1.解释型语言与编译型语言 2.python的特点 3.python的优缺点 二丶第一个python程序 1.python源程序概 ...

  4. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

  5. Python 学习参考书目推荐

    Python 学习,参考书目推荐 前言 好的技术书籍可以帮助我们快速地成长,大部分人或多或少地受益于经典的技术书籍.在「Python开发者」微信公号后台,我们经常能收到让帮忙推荐书籍的消息.这类的问题 ...

  6. Python学习系列(一)(基础入门)

    Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频 ...

  7. Python学习(二)Python 简介

    Python 简介 官方指南及文档 Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr Python3.4官方指南(中文版):http://pan.b ...

  8. 干货来了!python学习之重难点整理合辑1

    关于装饰器.lambda.鸭子类型.魔法函数的理解仍存有困惑之处,趁周末有时间温故,赶紧去自学了解下相关知识. 1.装饰器是什么: 很多初学者在接触装饰器的时候只做到了肤浅的了解它的概念.组成形态.实 ...

  9. Python面向对象三要素-多态

    Python面向对象3要素-多态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.多态概述 OCP原则:多用“继承”,少修改. 继承的用途:在子类上实现对基类的增强,实现多态. ...

  10. Python面向对象三要素-继承(Inheritance)

    Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...

随机推荐

  1. 【Leetcode】【Easy】Contains Duplicate

    Given an array of integers, find if the array contains any duplicates. Your function should return t ...

  2. FTP上传(批处理)

    将以下内容保存为名为ftp_upload.txt的文件: open 192.168.11.199testw\adadminboc.123binaryput e:\wt.zipbye 在命令提示符下运行 ...

  3. Windows下Git服务端和客户端的搭建

    1.服务器端的搭建 本人使用的是一款带源码的工具:bonobogitserver,对应的网址为:https://bonobogitserver.com/ 具体操作方式如下: 1.打开网址,下载最新版本 ...

  4. 深入了解Node模块原理

    深入了解Node模块原理 当我们编写JavaScript代码时,我们可以申明全局变量: var s = 'global'; 在浏览器中,大量使用全局变量可不好.如果你在a.js中使用了全局变量s,那么 ...

  5. 创建工程支持scala代码开发

    第一步:idea当中创建创建普通maven工程 File ==> New ==> Project 第二步:修改pom.xml添加scala的版本以及打包插件 <dependencie ...

  6. PyCharm最新2018激活码,最新方法

    内容:通过修改hosts文件,让pycharm不能够联网验证激活码的方式.我在kali和win10都成功了 1.修改hosts文件 Windows文件位置:C:\Windows\System32\dr ...

  7. webpack和gulp

    在没有使用任何自动化工具之前,如果用sass写了css, 用coffee写了js, 那么我们必须手动用相应的compiler去编译各自的文件,然后各自minify(js,css文件压缩并合并).这时如 ...

  8. centos7源码安装vim8.0

    centos 6和7通过yum安装的vim版本仍为7.4,若想尝鲜,可获取源码包编译安装. 准备工作 1.检查vim旧版本,若已存在,将其卸载. $ vim$ yum remove vim* -y 2 ...

  9. iOS的AssetsLibrary框架访问所有相片

    该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation. ALAssetsLibrary ...

  10. HDU 1233 还是畅通工程(Kruskal算法)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)   ...