当前位置: 首页 > news >正文

网络编程介绍(二)(端口、通信协议)

端口

标记正在计算机设备上运行的应用程序的,被规定为一个 16 位的二进制,范围是 0~65535

分类

周知端口: 0~1023 ,被预先定义的知名应用占用(如: HTTP 占用 80 FTP 占用 21
注册端口 1024~49151 ,分配给用户进程或某些应用程序。
动态端口: 49152 65535 ,之所以称为动态端口,是因为它 一般不固定分配某种进程,而是动态分配。

通信协议

网络上通信的设备,事先规定的连接规则,以及传输数据的规则被称为网络通信协议。

开放式网络互联标准:OSI网络参考模型

OSI 网络参考模型:全球网络互联标准。
TCP/IP网络模型:事实上的国际标准。

OSI网络参考模型

TCP/IP网络模型

各层对应

面向操作

应用层

应用层

HTTPFTPSMTP…

应用程序需要关注的:浏览器,邮箱。程序员一般在这一层开发

表示层

会话层

传输层

传输层

UDPTCP…

选择使用的TCP , UDP协议

网络层

网络层

IP…

封装源和目标IP

数据链路层

数据链路层+ 物理

比特流

物理设备中传输

物理层

传输层的2个通信协议

UDP(User Datagram Protocol) :用户数据报协议;
TCP(Transmission Control Protocol) :传输控制协议。

UDP协议

特点:无连接、不可靠通信。(通讯效率高)
不事先建立连接,数据按照包发,一包数据包含:自己的 IP 、程序端口,目的地 IP 、程序端口和数据(限制在 64KB 内)等。
发送方不管对方是否在线,数据在中间丢失也不管,如果接收方收到数据也不返回确认,故是不可靠的 。

TCP协议

特点:面向连接、可靠通信。(通讯效率相对不高)
TCP 的最终目的:要保证在不可靠的信道上实现可靠的传输。
TCP 主要有三个步骤实现可靠传输:(三次)建立连接,传输数据进行确认,(四次)断开连接。
(三次)建立连接

        发出连接请求

        返回一个响应

        再次发出确认信息,连接建立

(四次)断开连接

        发出断开连接请求

        返回一个响应:稍等

        返回一个响应:确认断开

        发出正式确认断开连接

相关文章:

  • Javaweb基础之工程路径
  • 初始操作系统
  • 10分钟了解ERP软件系统
  • 【竞技宝】欧洲杯:德国被乌克兰逼平,27脚射门仍难得分!
  • 【面试干货】 非关系型数据库(NoSQL)与 关系型数据库(RDBMS)的比较
  • 从0开始学人工智能测试节选:Spark -- 结构化数据领域中测试人员的万金油技术(三)
  • Docker 部署 OCRmyPDF、提取PDF内容
  • 实时数据传输:Django 与 MQTT 的完美结合
  • 【AIoT-Robot】3d hand pose
  • 【赠书活动】好书推荐—《详解51种企业应用架构模式》
  • 【十年java搬砖路】Jumpserver docker版安装及配置Ldap登陆认证
  • Flink中因java的泛型擦除导致的报错及解决
  • 上传图片并显示#Vue3#后端接口数据
  • 酷得单片机方案 2.4G儿童遥控漂移车
  • 徐州服务器机柜租用的好处
  • Centos6.8 使用rpm安装mysql5.7
  • gitlab-ci配置详解(一)
  • Java IO学习笔记一
  • JavaScript的使用你知道几种?(上)
  • jdbc就是这么简单
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Nacos系列:Nacos的Java SDK使用
  • python3 使用 asyncio 代替线程
  • Wamp集成环境 添加PHP的新版本
  • 搭建gitbook 和 访问权限认证
  • 回顾2016
  • 前端
  • 如何使用 JavaScript 解析 URL
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 小程序开发之路(一)
  • 学习使用ExpressJS 4.0中的新Router
  • raise 与 raise ... from 的区别
  • ​渐进式Web应用PWA的未来
  • #{}和${}的区别是什么 -- java面试
  • #HarmonyOS:基础语法
  • #pragma pack(1)
  • $refs 、$nextTic、动态组件、name的使用
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (独孤九剑)--文件系统
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (强烈推荐)移动端音视频从零到上手(上)
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (未解决)macOS matplotlib 中文是方框
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (正则)提取页面里的img标签
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Core Web APi类库如何内嵌运行?
  • .NET微信公众号开发-2.0创建自定义菜单
  • @Documented注解的作用
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @RestControllerAdvice异常统一处理类失效原因
  • [ 数据结构 - C++] AVL树原理及实现