网络协议

news2024/12/27 13:06:45

网络通信协议:计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代 码结构、传输控制步骤、出错控制等制定标准。
问题:网络协议太复杂:计算机网络通信涉及内容很多,比如指定源地址和目标地址,加密解密,压缩 解压缩,差错控制,流量控制,路由控制,如何实现如此复杂的网络协议呢?
通信协议分层的思想:在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常 用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与 再下一层不发生关系。各层互不影响,利于系统的开发和扩展。
TCP/IP协议簇
TCP协议:
1、 使用TCP协议前,须先建立TCP连接,形成传输数据通道
2、 传输前,采用“三次握手”方式,点对点通信,是可靠的
3、 TCP协议进行通信的两个应用进程:客户端、服务端。
4、 在连接中可进行大数据量的传输
5、 传输完毕,需释放已建立的连接,效率低
UDP协议:
1、 将数据、源、目的封装成数据包,不需要建立连接
2、 每个数据报的大小限制在64K内
3、 发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
4、 可以广播发送
5、 发送数据结束时无需释放资源,开销小,速度快
在这里插入图片描述
在这里插入图片描述
Socket
1、 利用套接字(Socket)开发网络应用程序早已被广泛的采用,以至于成为事实 上的标准。
2、 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标 识符套接字。
3、 通信的两端都要有Socket,是两台机器间通信的端点。
4、 网络通信其实就是Socket间的通信
5、 Socket允许程序把网络连接当成一个流,数据在两个Socket间通过IO传输。
6、 一般主动发起通信的应用程序属客户端,等待通信请求的为服务端。
7、 Socket分类:
7.1、流套接字(stream socket):使用TCP提供可依赖的字节流服务
7.2、数据报套接字(datagram socket):使用UDP提供“尽力而为”的数据报服务
基于Socket的TCP编程
Java语言的基于套接字编程分为服务端编程和客户端编程,其通信模 型如图所示:
在这里插入图片描述

客户端Socket的工作过程包含以下四个基本的步骤:
1、 创建 Socket:根据指定服务端的 IP 地址或端口号构造 Socket 类对象。若服务器端 响应,则建立客户端到服务器的通信线路。若连接失败,会出现异常。
2、 打开连接到 Socket 的输入/出流: 使用 getInputStream()方法获得输入流,使用 getOutputStream()方法获得输出流,进行数据传输
3、 按照一定的协议对 Socket 进行读/写操作:通过输入流读取服务器放入线路的信息 (但不能读取自己放入线路的信息),通过输出流将信息写入线程。
4、 关闭 Socket:断开客户端到服务器的连接,释放线路
客户端创建Socket对象
客户端程序可以使用Socket类创建对象,创建的同时会自动向服务器方发起连 接。Socket的构造器是:
Socket(String host,int port)throws UnknownHostException,IOException:向服务器(域名是 host。端口号为port)发起TCP连接,若成功,则创建Socket对象,否则抛出异常。
Socket(InetAddress address,int port)throws IOException:根据InetAddress对象所表示的 IP地址以及端口号port发起连接。
客户端建立socketAtClient对象的过程就是向服务器发出套接字连接请求
在这里插入图片描述

服务器程序的工作过程包含以下四个基本的步骤:
1、 调用ServerSocket(int port):创建一个服务器端套接字,并绑定到指定端口 上。用于监听客户端的请求。
2、 调用 accept():监听连接请求,如果客户端请求连接,则接受连接,返回通信 套接字对象。
3、 调用 该Socket类对象的 getOutputStream() 和 getInputStream ():获取输出 流和输入流,开始网络数据的发送和接收。
4、 关闭ServerSocket和Socket对象:客户端访问结束,关闭通信套接字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多标签, 极限的多标签算法】评价指标梳理

具体研究多标签和极限多标签 (XML) 的时候, 合理使用评价指标是关键. 最近在研究极限多标签算法的时候发现了它和传统多标签算法的评价指标是有异的, 而且我曾经积累的传统多标签评价指标也没有一个系统的体系 (很混乱). 于是写下本文用于自我总结. 查询目录<想看什么直接通…

语音识别翻译怎么做?这些方法值得收藏

随着网络的不断发展&#xff0c;我们可以通过网络与世界各地的网友进行聊天。小伙伴们平时会和外国人交流吗&#xff1f;如果是文字聊天&#xff0c;我们看不懂的时候&#xff0c;还可以直接复制文字进行翻译。那如果外国网友发了段语音&#xff0c;结果我们大部分内容听不懂的…

电力行业人员定位管理解决方案之智能巡检

智能巡检引入大数据分析理念&#xff0c;通过数字化技术实现对生产现场各关键要素的全面感知和实时互联&#xff0c;形成项目现场“数据一个库、监管一张网、管理一条线“。 在信息技术高速发展的今天&#xff0c;传统人工巡视、手工纸介质记录的工作方式已经无法满足电力设备巡…

第7章 博客文章的前端渲染显示

说实话本人通过Vue页面实现前端对后端数据的渲染显示也是初学咋练&#xff0c;但后端实现本人却是老鸟&#xff0c;对于后端开发者来说如果&#xff0c;渲染显示的软件是浏览器&#xff0c;除非团队中有Vue方面的大拿&#xff0c;不管是PC浏览器还是移动PC浏览器&#xff0c;Ra…

元宇宙初体验

14天学习训练营导师课程&#xff1a; 张子良《 元宇宙体系结构、关键技术和实践探索》 前言 最近这段时间加入勤学会的学习中&#xff0c;我加入的是元宇宙相关的学习组&#xff0c;为什么我选择元宇宙&#xff0c;不仅因为元宇宙是应用场景和生活方式的未来&#xff0c;而且元…

启动 idea 弹出“Failed to load JVM DLL\bin\server\jvm.dll”错误的解决方法

打开idea报failed to load JVM DLL 原因1&#xff1a; 查看是否缺少Microsoft Visual C 2010 Redistributable Package x64&#xff0c;没有则安装。 地址&#xff1a; 32 bit: http://www.microsoft.com/download/en/details.aspx?id5555 64 bit: http://www.microsoft.com…

面试必问 创建10个a点击弹出下标

<script> // for (let i 1; i <11; i) { // var adocument.createElement("a"); // a.href"#"; // a.innerHTML"<br />a标签"i // document.body…

JDBC获取数据库连接

Driver接口实现类 Driver接口介绍 java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的&#xff0c;不同数据库厂商提供不同的实现。 在程序中不需要直接去访问实现了 Driver 接口的类&#xff0c;而是由驱动程序管理器类(java.sql.…

Android学习---zygote(上)

Zygote意思是受精卵&#xff0c;它在Java世界中起到了很重要的作用&#xff0c;Android是基于Linux内核的&#xff0c;SDK是基于Java世界的&#xff0c;native语言是基于C和C&#xff0c;起初一定是先存在native世界&#xff0c;那么Java世界是如何创建的&#xff1f;这就与zyg…

『LeetCode|每日一题』---->打家劫舍||

目录 1.每日一句 2.作者简介 『LeetCode|每日一题』打家劫舍|| 1.每日一题 2.解题思路 2.1 思路分析 2.2 核心代码 2.3 完整代码 2.4 运行结果 1.每日一句 任何事情把期待值降到最低&#xff0c;所有遇见的都是礼物 2.作者简介 &#x1f3e1;个人主页&#xff1a;XiaoXia…

github数据怎么Python爬取

爬虫流程 在上周写完用scrapy爬去知乎用户信息的爬虫之后&#xff0c;github上star个数一下就在公司小组内部排的上名次了&#xff0c;我还信誓旦旦的跟上级吹牛皮说如果再写一个&#xff0c;都不好意思和你再提star了&#xff0c;怕你们伤心。上级不屑的说&#xff0c;那就写…

网站页面SEO优化方案

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 背景说明 针对网页面而提供相应的产品页面 SEO 优化部署方案&#xff0c;使其产品页面符合 SEO 规范&#xff0c;且能尽快获得产品词的较好排名。 产品相关页面URL命名 URL 结构对于网站页面的 seo 来说非常重要…

VirtualLab教程特辑

目录前言一、一些界面上的说明1、关于软边relative edge width2、catalog里器件参数改动3、系统光线分析仪的光线数4、编程手册从哪看以及哪里可以编程5、Multiple Light Source6、多波长与多模式分开显示7、harmonic fields set-manipulations8、detector results显示功率小9、…

阿尔茨海默病中的人类连接组及它与生物标记物和遗传学的关系

摘要 阿尔茨海默病(AD)损害了大脑的结构和功能网络&#xff0c;导致认知障碍。最近的连接组学研究结果已经将AD中结构和功能网络组织的变化与淀粉样蛋白-β和tau蛋白的积累和扩散模式联系起来&#xff0c;为该疾病的神经生物学机制提供了见解。此外&#xff0c;对基因相关的连接…

如何检索专利技术?

问题一&#xff1a;申请实用新型专利需要提交哪些文件呢&#xff1f; 主要有以下四点&#xff1a; 1、请求书&#xff1a;主要包括实用新型专利的名称、申请人的名称和地址等内容&#xff1b; 2、权利要求书&#xff1a;这里需要交代好每一项要保护的内容&#xff1b; 3、说…

CommonsCollections6利用链分析

目录 (一&#xff09;利用链 &#xff08;二&#xff09;代码分析 0x01 TiedMapEntry 0x02 HashMap &#xff08;三&#xff09;POC&#xff1a; (一&#xff09;利用链 先来看 ysoserial 中的利用链&#xff1a; /*Gadget chain:java.io.ObjectInputStream.readObject()…

[附源码]SSM计算机毕业设计线上图书销售管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

三大O(nlogn)算法分析

堆排序 demo 从第一个父节点开始&#xff0c;每一个都调换自己和所有子孙节点的上下层次调换&#xff0c;形成最大堆。然后进行堆分支调整 class Solution {public int[] sortArray(int[] nums) {maxHeap(nums);sort(nums);return nums;}public static void maxHeap(int[] n…

blender hardOps插件

hardOps将一些常用的功能整合在一起&#xff0c;方便调用&#xff0c;例如&#xff0c;平滑&#xff0c;倒角&#xff0c;标记锐边&#xff0c;添加修改器 打开hardOps 方法1&#xff1a;物体模式在舞台左侧选择hardOps图标 推荐用这个 方法2&#xff1a;这个插件的打开方式非…

C++【类型转换】

文章目录一、C语言的类型转换二、C的强制类型转换1.static_cast静态转换2.reinterpret_cast重新诠释3.const_cast小总结4.dynamic_cast动态转换一、C语言的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者…