进击の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. 【秒懂Java】【第1章_初识Java】02_软件开发

    通过上一篇文章<01_编程语言>,我们了解到 Java是众多编程语言中的其中一种 编程语言可以用来开发软件 因此,我们即将要学习的Java技术,是属于软件开发的范畴.那软件开发的前景如何呢 ...

  2. QtableWidget用法流程

    QtableWidget用法流程 ​ 作者:流火 日期:2020/5/10 QTableWidget的基本构造函数 QTableWidget 是QTableview的子类.主要去呗是QTableVie ...

  3. 深入理解JVM(③)Java的模块化

    前言 JDK9引入的Java模块化系统(Java Platform Module System ,JPMS)是 对Java技术的一次重要升级,除了像之前JAR包那样充当代码的容器之外,还包括: 依赖其 ...

  4. 日期类&&包装类&&System类&&Math类&&Arrays数组类&&大数据类

    day 07 日期类 Date 构造函数 Date():返还当前日期. Date(long date):返还指定日期 date:时间戳--->距离1970年1月1日 零时的毫秒数 常用方法 日期 ...

  5. day05数据绑定

    流程:普通编辑-添加编辑模式 <text>数据绑定</text> <view>{{message}}</view> <button bindtap ...

  6. Oracle Solaris 10图文安装

    文章目录 1. 虚拟机软件 2. solaris 10镜像 3. 安装OS 4. 允许远程使用root用户登录SSH 5. bash配置 5.1. 修改bash 5.2. 修改提示符 6. CRT连接 ...

  7. 轻松让HTML5可以显示桌面通知Notification非常实用

    使用Notification的流程 1.检查浏览器是否支持Notification2.检查浏览器的通知权限3.如果权限不够则申请获取权限4.创建消息通知5.展示消息通知 Notification AP ...

  8. HDU 2157 How many ways?? 题解

    题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线 ...

  9. Flask-实现下载功能

    1. 接口返回真实的文件 这种情况比较简单, flask里带有此类api, 可以用send_from_directory和send_file. 核心代码如下: from flask import se ...

  10. [设计模式]面向对象五大设计原则:SOLID

    SOLID (面向对象设计) 单一功能原则(Single responsibility principle) 每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来 所有它的(这个类的)服务 ...