进击のpython

*****

网络编程——TCP/UDP协议


其实你也发现了,应用层是交给应用来处理的,我们什么也做不了

相较于网络编程来说,我们更重要的是在做应用层和传输层的对接

因为你也看到了,如果我传输层成功了,后面的层级其实是自动进行的

那,传输层的关键是什么呢????协议!

那传输层的协议有什么呢?TCP/UDP协议

那我们现在就可以针对这两个协议来进行学习,看看如何才能把信息传到下一层


  • TCP协议

    TCP协议是什么呢?TCP协议其实也叫流式协议

    就是像流水一样传输的协议

    他将数据看作流水一般,在服务端和客户端之间传输

    那我问你熬,我要是想把这个水流给你,直接扔给你?

    不能把,我是不是要通过一个管子给你啊

    在咱俩之间创建一个管子,然后我把水通过这个管子流给你

    那你也想把水流给我,你能用我的管子吗?不能吧

    你也得整个管子,然后把水流流给我是吧


    那我是有水流了现挖管子嘛?不是吧!

    我应该先挖管子,然后等到有水流的时候直接用是吧

    而且 我再问你 你管子一下子就整完了?

    也不是吧,是不是要有一点时间来做管子啊


    而且还有一个问题,我要往你那挖就能挖嘛?

    不是吧,是不是应该征求你的同意啊

    所以说!要是搭建这个传输层应该是这样的:

    我问你同不同意建管道

    你给我个回应说你同意

    你问我同不同意建管道

    我给你个回应说我同意

    没问题吧,这个操作过程

    那我们把一次过程叫做握手的话,那这是... ...四次握手!

    但是啊,TCP协议是三次握手,怎么握手呢?

    你会发现第二步和第三步都是你的操作

    所以本着省事的原则,二三步就可以是确认并请求对吧

    那这样,就变成了三次握手

    三次握手的完成也就是两端的管道搭建成功


    同时,TCP协议,也是可靠传输协议

    什么叫可靠??就是我传信息的时候,你必须要给你一个反馈信息

    我拿到你的反馈信息,我才继续下面的操作,否则我就一直给你传

    那我还有问题,水流总是要流完的吧,那我流完了之后是不是要拆管道了

    怎么拆呢?

    我跟你说我要拆管道

    你给我个回应说你同意

    你跟我说你要拆管道

    我给你个回应说我同意

    对吧!就是这样的吧

    那我们能不能像三次握手一样,把第二步第三步合在一起呢?

    我跟你说我的水流完了,要断开没问题吧

    但是你是不是要把流向你的水流完才能跟我说你要断开

    总不能我水刚流完你就流完了吧,这不科学啊

    所以不能合在一起

    那我把每一步都叫挥手的话,那这就叫四次挥手


  • UDP协议

    UDP协议比较好玩的就是,他根本不需要管道

    而且她知道了你的ip和端口之后,直接把数据扔给你

    管你接没接到,所以相比较TCP来说传数据的过程就不可靠了

    但是,相较于TCP来说,UDP的发送效率更高

    因为不用建管子,也不用接受确认信息


这一块的理论部分就结束了

后面就是教你怎么创建管道传输数据了


*理论结束*
*下面实操*

~~网络编程(三):TCP/UDP~~的更多相关文章

  1. javase的网络编程(InetAddress,UDP,TCP,URL,Socket,DatagramSocket)

    通过一段时间对java网络编程相关内容的学习,写下这篇随笔,对这一部分的知识进行梳理和总结. 网络编程 一.网络编程三要素: IP地址:网络会给每个联网的主机分配一个数字的编码地址,该地址就是IP地址 ...

  2. 【网络编程1】网络编程基础-TCP、UDP编程

    网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...

  3. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  4. C#网络编程入门之UDP

    目录: C#网络编程入门系列包括三篇文章: (一)C#网络编程入门之UDP (二)C#网络编程入门之TCP (三)C#网络编程入门之HTTP 一.概述 UDP和TCP是网络通讯常用的两个传输协议,C# ...

  5. C#网络编程之---TCP协议的同步通信(二)

    上一篇学习日记C#网络编程之--TCP协议(一)中以服务端接受客户端的请求连接结尾既然服务端已经与客户端建立了连接,那么沟通通道已经打通,载满数据的小火车就可以彼此传送和接收了.现在让我们来看看数据的 ...

  6. 网游中的网络编程3:在UDP上建立虚拟连接

    目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...

  7. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系

    [Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ...

  8. 网络编程第三讲UDP编写

    网络编程第三讲UDP编写 一丶UDP简介 UDP是面向无连接的.就是说数据传输会丢掉.网络延时比较大的情况下.会早上丢包.例如视频通话.就是UDP UDP不需要建立建立. 下面有UDP编写流程图 下图 ...

  9. 【转载】[基础知识]【网络编程】TCP/IP

    转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops  胖友们楼主我又 ...

  10. python网络编程05 /TCP阻塞机制

    python网络编程05 /TCP阻塞机制 目录 python网络编程05 /TCP阻塞机制 1.什么是拥塞控制 2.拥塞控制要考虑的因素 3.拥塞控制的方法: 1.慢开始和拥塞避免 2.快重传和快恢 ...

随机推荐

  1. C++ Primer Plus(四)

    完整阅读C++ Primer Plus 系统重新学习C++语言部分,记录重要但易被忽略的,关键但易被遗忘的. 友元.异常和其他 1.抛出异常类时,虽然catch的是一个引用,但是也会产生一次拷贝,因为 ...

  2. 《The Design of a Practical System for Fault-Tolerant Virtual Machines》论文研读

    VM-FT 论文研读 说明:本文为论文 <The Design of a Practical System for Fault-Tolerant Virtual Machines> 的个人 ...

  3. JavaGUI练习 - 正交测试用例生成小工具

    正交表生成小工具 说明 小工具的适用对象主要是测试人员,他们日常工作中手动设计大量测试用例,工作繁杂甚至还存在覆盖不全面等问题. 为了提高他们的测试效率,该小工具可以通过输入一组多因素多水平的数据,然 ...

  4. tyvj 1198 矩阵连乘——区间dp

    tyvj 1198 矩阵连乘 题目描述 一个n*m矩阵由n行m列共n*m个数排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算 ...

  5. Jmeter(十五) - 从入门到精通 - JMeter导入自定义的Jar包(详解教程)

    1.简介 原计划这一篇是介绍前置处理器的基础知识的,结果由于许多小伙伴或者童鞋们在微信和博客园的短消息中留言问如何引入自己定义的Jar包呢???我一一回复告诉他们和引入插件的Jar包一样的道理,一通百 ...

  6. day44 初识数据库

    目录 一.数据的演变 二.数据库 三.MySQL 1 基本原理 2 重要概念介绍 3 安装 4 启动 5 sql基本语句 6 环境变量的配置及系统服务制作 7 关于密码 8 统一编码 9 基本sql语 ...

  7. MyBatis框架基础详细开发流程

    MyBatis 项目已托管到GitHub,大家可以去GitHub查看下载!并搜索关注微信公众号 码出Offer 领取各种学习资料! 一.框架概述 1.1 什么是框架? 软件的半成品,解决了软件开发过程 ...

  8. requests接口自动化8-传递数据为xml形式的post请求:data

    传递数据为xml形式的post请求 请求体内容: <?xml version=“1.0” encoding = “UTF-8”?> <COM> <REQ name=&qu ...

  9. 使用eval将字符串转化成字典时报name 'null' is not defined错误解决办法

    在接口测试过程中,为了取值将形如字典形式的字符串使用eval()方法转化成字典方便取值 str={"code":100,"num":1,"data&q ...

  10. celery 错误相关:Monkey-patching not on the main thread; threading.main_thread().join() will hang from a greenlet

    /Users/wangpingyang/.pyenv/versions/3.7.2/lib/python3.7/site-packages/httprunner/__init__.py:5: Monk ...