进击の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. 并发06--JAVA中的并发工具类

    1.等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作. 使用join也可以完成这个操作,代码示例如下: package com.exam ...

  2. JQuery UI - draggable参数中文详细说明

    概述 在任何DOM元素启用拖动功能.通过单击鼠标并拖动对象在窗口内的任何地方移动. 官方示例地址:http://jqueryui.com/demos/draggable/ 所有的事件回调函数都有两个参 ...

  3. 112买卖股票的最佳时机II

    from typing import List# 这道题和上一题很类似,但有一些不同,每天都可以买入,或者卖出# 那么利润最大化,就是i + 1 天的价格比i天的价格高的时候买入# 然后在i + 1天 ...

  4. Java synthetic

    读完这篇文章你将会收获到 synthetic fields synthetic method synthetic class 概述 上一篇 Java 枚举 提及到编译成 class 文件之后.编译器会 ...

  5. ASP.NET 开源导入导出库Magicodes.IE 多Sheet导入教程

    多Sheet导入教程 说明 本教程主要说明如何使用Magicodes.IE.Excel完成多个Sheet数据的Excel导入. 要点 多个相同格式的Sheet数据导入 多个不同格式的Sheet数据导入 ...

  6. linux简单介绍

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. linux基本思想有两点,1.一切都是文件:2.每个软件有确定 ...

  7. python中的守护线程

    什么是守护线程:在后台运行,为其他线程提供服务的线程成为守护线程. 为什么要引入守护线程: thread模块不支持守护线程的概念,当主线程退出时,所有的子线程都将终止,不管它们是否仍在工作, 如果你不 ...

  8. 阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP) 并发调试之MySQL配置

    mysql高并发配置 要在mysqld下设置 1. 修改back_log参数值:由默认的50修改为500.(每个连接256kb,占用:125M) back_log=500 back_log值指出MyS ...

  9. 部署Redis Cluster 6.0 集群并开启密码认证 和 Redis-cluster-proxy负载

    部署Redis Cluster集群并开启密码认证 如果只想简单的搭建Redis Cluster,不需要设置密码和公网访问,可以参考官方文档. 节点介绍 Cluster模式推荐最少有6个节点,本次实验搭 ...

  10. [PA2015]Siano 单调栈

    由于某人找了个单调栈的题解但是没研究透所以让我们来研究............ 首先先来考虑下面一种情况,假设第\(k\)次切割时,天数为\(d_k\),高度为\(b_k\),第\(k+1\)次切割时 ...