网络协议

对于需要从事网络编程的程序员来说,网络协议是一个需要深刻理解的概念。那么什么是网络协议呢?

网络协议是指对于网络中传输的数据格式的规定。对于网络编程初学者来说,没有必要深入了解TCP/IP协议簇,所以对于初学者来说去读大部头的《TCP /IP协议》也不是一件很合适的事情,因为深入了解TCP/IP协议是网络编程提高阶段,也是深入网络编程底层时才需要做的事情。

对于一般的网络编程来说,更多的是关心网络上传输的逻辑数据内容,也就是更多的是应用层上的网络协议,所以后续的内容均以实际应用的数据为基础来介绍网络协议的概念。

那么什么是网络协议呢,下面看一个简单的例子。春节晚会上“小沈阳”和赵本山合作的小品《不差钱》中,小沈阳和赵本山之间就设计了一个协议,协议的内容为:

如果点的菜价钱比较贵是,就说没有。

按照该协议的规定,就有了下面的对话:

赵本山:4斤的龙虾

小沈阳:(经过判断,得出价格比较高),没有

赵本山:鲍鱼

小沈阳:(经过判断,得出价格比较高),没有

这就是一种双方达成的一种协议约定,其实这种约定的实质和网络协议的实质是一样的。

网络协议的实质也是客户端程序和服务器端程序对于数据的一种约定,只是由于以计算机为基础,所以更多的是使用数字来代表内容,这样就显得比较抽象一些。

下面再举一个简单的例子,介绍一些基础的网络协议设计的知识。例如需要设计一个简单的网络程序:网络计算器。

也就是在客户端输入需要计算的数字和运算符,在服务器端实现计算,并将计算的结果反馈给客户端。在这个例子中,就需要约定两个数据格式:客户端发送给服务器端的数据格式,以及服务器端反馈给客户端的数据格式。

可能你觉得这个比较简单,例如客户端输入的数字依次是12和432,输入的运算符是加号,可能最容易想到的数据格式是形成字符串“12+432”,这样格式的确比较容易阅读,但是服务器端在进行计算时,逻辑就比较麻烦,因为需要首先拆分该字符串,然后才能进行计算,所以可用的数据格式就有了一下几种:

“12,432,+” 格式为:第一个数字,第二个数字,运算符

“12,+,432” 格式为:第一个数字,运算符,第二个数字

其实以上两种数据格式很接近,比较容易阅读,在服务器端收到该数据格式以后,使用“,”为分隔符分割字符串即可。

假设对于运算符再进行一次约定,例如约定数字0代表+,1代表减,2代表乘,3代表除,整体格式遵循以上第一种格式,则上面的数字生产的协议数据为:

“12,432,0”

这就是一种基本的发送的协议约定了。

另外一个需要设计的协议格式就是服务器端反馈的数据格式,其实服务器端主要反馈计算结果,但是在实际接受数据时,有可能存在格式错误的情况,这样就需要简单的设计一下服务器端反馈的数据格式了。

例如规定,如果发送的数据格式正确,则反馈结果,否则反馈字符串“错误”。这样就有了以下的数据格式:

客户端:“1,111,1” 服务器端:“-110”

客户端:“123,23,0” 服务器端:“146”

客户端:“1,2,5” 服务器端:“错误”

这样就设计出了一种最最基本的网络协议格式,从该示例中可以看出,网络协议就是一种格式上的约定,可以根据逻辑的需要约定出各种数据格式,在进行设计时一般遵循“简单、通用、容易解析”的原则进行。

而对于复杂的网络程序来说,需要传输的数据种类和数据量都比较大,这样只需要依次设计出每种情况下的数据格式即可,例如QQ程序,在该程序中需要进行传输的网络数据种类很多,那么在设计时就可以遵循:登录格式、注册格式、发送消息格式等等,一一进行设计即可。

所以对于复杂的网络程序来说,只是增加了更多的命令格式,在实际设计时的工作量增加不是太大。

不管怎么说,在网络编程中,对于同一个网络程序来说,一般都会涉及到两个网络协议格式:客户端发送数据格式和服务器端反馈数据格式,在实际设计时,需要一一对应。

这就是最基本的网络协议的知识。

网络协议设计完成以后,在进行网络编程时,就需要根据设计好的协议格式,在程序中进行对应的编码了,客户端程序和服务器端程序需要进行协议处理的代码分别如下。

客户端程序需要完成的处理为:

1、 客户端发送协议格式的生成

2、 服务器端反馈数据格式的解析

服务器端程序需要完成的处理为:

1、 服务器端反馈协议格式的生成

2、 客户端发送协议格式的解析

这里的生成是指将计算好的数据,转换成规定的数据格式,这里的解析指,从反馈的数据格式中拆分出需要的数据。

在进行对应的代码编写时,严格遵循协议约定即可。

所以,对于程序员来说,在进行网络程序编写时,需要首先根据逻辑的需要设计网络协议格式,然后遵循协议格式约定进行协议生成和解析代码的编写,最后使用网络编程技术实现整个网络编程的功能。

由于各种网络程序使用不同的协议格式,所以不同网络程序的客户端之间无法通用。

而对于常见协议的格式,例如HTTP(Hyper Text Transfer Protocol,超文本传输协议)、FTP(File Transfer Protocol,文件传输协议),SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)等等,都有通用的规定,具体可以查阅相关的RFC文档。

最后,对于一种网络程序来说,网络协议格式是该程序最核心的技术秘密,因为一旦协议格式泄漏,则任何一个人都可以根据该格式进行客户端的编写,这样将影响服务器端的实现,也容易出现一些其它的影响。

小结

关于网络编程基本的技术就介绍这么多,该部分介绍了网络编程的基础知识,以及Java语言对于网络编程的支持,网络编程的步骤等,并详细介绍了TCP方式网络编程和UDP方式网络编程在Java语言中的实现。

网络协议也是网络程序的核心,所以在实际开始进行网络编程时,设计一个良好的协议格式也是必须进行的工作。

更多优质资料尽在考试大论坛 考试大在线题库 java认证更多详细资料。

全部

java 协议这个概念_java网络协议概念是什么?相关推荐

  1. java相关网络协议无响应_java网络协议有哪些

    上网的途径有很多,java是最普遍的,那么卑java网络协议有哪些?了解网络安全常识,首先就要了解计算机网络安全有哪些基本注意事项,下面佰佰安全网小编就带您认识一下吧. 概念 协议是指计算机通信网络中 ...

  2. HCIA(计算机网络概念、网络协议模型意义)

    HCIA(计算机网络概念-网络协议模型意义) 文章目录 前言 一.计算机网络概念 二.网络协议模型意义 前言 这一节讲述网络的基本概念与网络协议模型的意义 提示:以下是本篇文章正文内容 一.计算机网络 ...

  3. 服务器网络协议是什么,介绍网络协议,什么是网络协议三要素?

    网络的复杂性取决于人们对它的需求.那么在这当中,最为重要的就是网络协议了.那么什么是网络协议?相信很多人都会疑惑,下面给大家介绍网络协议是什么以及网络协议的三要素是什么的基础知识,不懂的朋友可以通过本 ...

  4. 计算机网络协议的缺点,对网络协议的分层处理的优缺点

    网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合.TCP/IP通常被认为是一个四层协议系统,对网络协议的分层处理的优缺点是什 ...

  5. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  6. java线程池概念_Java 线程池概念、原理、简单实现

    线程池的思想概述 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结東了,这样频繁创建线程就会大大降低系 ...

  7. 计算机网络协议第一章,网络协议基础知识

    序    我计划开发一个系列专栏,将自己在网络方面的积累完善成一个系列知识,让读者的监督和拍砖督促自己并提高自己.如果在读本人的系列文章得到些许收获,那对我来说是更大的收获.    本系列的阅读应该不 ...

  8. simp服务器协议,几个常用网络协议的简单说明

    网络协议的五花八门,让我们初学者总是有些不知所措.那么接下来我们就简单介绍一下常用的几个网络协议.那么就让我们看看这些常用网络协议的一些概念,功能以及作用吧. 常用网络协议:ARP(Address R ...

  9. dhcp是哪一层的协议_常用的网络协议有哪些,分别是什么含义

    ARP(Address Resolution Protocol)地址解析协议 它是用于映射计算机的物理地址和临时指定的网络地址.启动时它选择一个协议(网络层)地址,并检查这个地址是否已经有别的计算机使 ...

最新文章

  1. mongodb的读写分离
  2. 细究fork()和vfork()
  3. jzoj4742-单峰【数学,数论】
  4. 每天自动给自己发天气预报的脚本
  5. android 菜单 功能键,Android交互体验必知:功能按键事件
  6. cmake笔记(1)
  7. C语言中的面向对象2
  8. 国联安 德盛 新基金 申购免手续费 产品好 利润高
  9. Ci24R1_与Si24R1的通讯兼容,更具性价比的2.4GHz收发芯片
  10. 数字电路基础01(含半加器、全加器、逻辑化简、卡诺图化简)
  11. 计算机专业学生的学期规划,大学生大一下学期规划
  12. android 5.1感叹号,关于5.1 WIFI显示感叹号
  13. 黑苹果安装后不能启动Windows解决
  14. Web逆向、软件逆向、安卓逆向、APP逆向,关于网络安全这些你必须懂
  15. 一致 先验分布 后验分布_先验分布、后验分布、似然估计这几个概念是什么意思,它们之间的关系是什么?...
  16. 恶意软件NOKKI和朝鲜“Group123”APT组织关联的最新证据
  17. 关于图片加载的问题-如加载失败显示占位图,预加载,懒加载
  18. 湖南多校对抗赛(2014.03.16) C.Pings
  19. minecraft服务器搭建教程_我的世界服务器创建教程
  20. T-SQL openquery 删除报错 “键列信息不足或不正确。更新影响到多行”

热门文章

  1. 基于JAVA+SpringMVC+MYSQL的旅行社管理系统
  2. 基于JAVA+SpringMVC+Mybatis+MYSQL的医院HR人事管理系统
  3. 代码审计之CVE-2017-6920 Drupal远程代码执行漏洞学习
  4. django项目验证码(PIL库实现)
  5. python scrapy cookies 处理
  6. 德国商业经济金融发展史
  7. 【Python】数据转换利器
  8. 我读的第一本书《梦断代码》
  9. 三星如何抄袭苹果 产品对比一目了然
  10. 初学者python笔记(装饰器后篇:登陆验证)