通信__第一眼就看上了你

七月流火,八月怀人,暑假到了,通信也到了...

终于告别了那寂寞如雪、孤芳自赏的单机日子,从今天开始,Java学习就正式步入一个新的阶段——网络大航海时代...

什么叫通信?通信的学习、编程与过去有什么不一样的地方??

在以前,我们总是在一台机子,一个程序上面折腾,不管是画画,压缩文件,或是坦克大战的小程序,程序所涉及到的数据都不能与外界交互。自己画的画,玩游戏的战绩都不能让别人知道,那很没意思。

而通信所要做的就是将多个程序,不管是自己机子上的多个程序还是别人电脑上的程序,连起来,数据通过某种媒介(一般是网线或无线网)在其之间传递,处理。


他们的区别就好像玩Dota建AI图打电脑跟在浩方平台上与别人对战的区别一样。


在学习通信之前,我们一定要了解关于网络的两个重要概念:IP和端口号(port)。


学习过网络基础的人都应该知道,网络协议,不管是ISO国际标准的七层分层,还是实际应用的TCP/IP协议的四层分层,其中都有一个网络层,也叫IP层。IP层的作用很大很广,但是,我们只需记住的就是它提供给每个网络用户独一无二的网络地址,IP地址。

IP地址是确定网络当中某一用户的唯一标识,它在计算机内部是由4个byte表示的,但通常,每8个1/0串拼成一个十进制的数,中间用'.'隔开。如:168.192.20.156。知道了某一台机子上的IP地址,原则上就能与之进行数据交互了。

知道了IP地址,是不是就能进行通信,就能写一个简单的类似与QQ和MSN一样的即时通讯工具了呢?

当然不行!试想一下,你在QQ上发送一条消息,消息通过IP地址找到我的电脑,然后我QQ收到了消息? 但是,我也开了MSN啊,为什么我MSN没反应?? 这是因为,每一个程序都有其在计算机上的独立端口号,别人通过端口号,就能知道你在计算机当中的位置。

就比如,IP地址相当于你家的地址,在什么街什么小区多少楼,端口好就相当于你在这栋楼的几几几房间。


IP地址在计算机内部是由2个byte表示的,那么一共有多少个端口号?

65536?错。65536*2个。这是因为网络编程分为TCP编程和UDP编程(至于什么叫TCP,什么叫UDP,下面再讲) ,每种方式都有65536个端口。即TCP上的10000端口和UDP上的10000端口是不同的。


还有一点需要注意:1024以前的端口比较特别,叫知名端口,一般不要使用,因为它们一般会给一些特别的,“知名”的程序使用,如网络服务就分配了80端口。


关于TCP,Transmission Control Protocol 的缩写,叫做传输控制协议。
UDP,User Datagram Protocol的缩写,叫做用户数据包协议。


TCP和UDP都使用相同的网络层,但TCP想应用层提供的是一种面向连接的,可靠的字节流服务,这意味着两个使用TCP的应用(通常是一个客户和一个服务器),在彼此交互数据之前必须先建立一个TCP连接。UDP则是一个简单的面向数据报的连接:程序的每个输出操作都正好产生一个UDP数据报,并组装成一个IP数据报发送出去。

TCP连接就好像打电话,一端说:“喂?”,另一端答:“喂!”,双方都确认对方在,才开始通话。UDP就像发短信,我写了一句短信,输入电话号码,发送出去就不管了,至于对面有没有收到就不管了。


TCP是可靠的连接,但比较慢,UDP是不可靠的,但速度快。

TCP一般用于速度需求不高,但精确度不高的地方,如银行,公司业务处理啊什么的
UDP一般用于速度要求高,但不需要很精准的地方,如视频,音频文件的传输(老实说一张相片丢一二个像素有什么关系?)我们玩的网络游戏一般也采用UDP传输形式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值