简谈计算机网络与网络编程

        网络概念 :

        首先.网络可以使不同物理位置上的计算机达到资源共享和通信的目的,在java中提供了专门的网络开发包----java.net来使用,当然也有随着时代技术的进步革新,会出现更多的API。

        此文章主要介绍与网络相关的概念,包括 端口,域名,网络服务器,网络通讯协议等,当然不深,因为这里的每一个都是展开都是很深的。有机会大家自行去研究。这里讲的概念都是都是学习网络编程的基础知识,后面我们还可以说明一下,基于TCP协议的Socket编程和基于UDP协议的Socket编程,结合具体案例,介绍使用这两种通讯协议进行网络编程原理及步骤,在此过程中,也会融合一些其他知识点。

        网络其实就是一组连接的计算机组,可以共享数据和通讯,可以根据你连接机子的范围分为:局域网,城域网,广域网。

        局域网(LAN):局域网是小范围的连接在一起的网络 ,比如某个建筑物内 或者 网吧内。

        城域网(MAN):城域网是覆盖城市或者城镇内广大地区的网络,是在一个城市范围内建立的计算机通信网。

        广域网(WAN):城市,国家,全球范围。

        


        OSI网络分层模型:

        网络上的信息传递也是由不同的层级负责不同的工作任务,但由于各个计算机厂商都采用私有的网络模型,给通信带来了很多麻烦,   因此 国际标准规定 了 一套 国际标准化的 开放系统连接参考模型 (Open System Interconnection OSI ),OSI参考模型是一个开放式体系结构,它规定将网络分为七层,每一层在网络信息传递中都发挥不同的作用。 下面是七层结构 :

 应用层:网络服务和最终用户的接口

表示层:数据的表示,安全和压缩

会话层:建立,管理和终止会话

传输层:定义传输数据的协议端口号,实现记忆流控制和差错校验

网络层:进行逻辑地址寻址,实现不同网络之间的路径选择

数据链路层:建立逻辑连接,实现硬件地址寻址,差错校验等功能

物理层:建立,维护,断开物理链接


TCP/IP模型:

另一个著名的模型是 鼎鼎大名的 TCP/IP模型,即传输控制协议/网络互联协议的简称。早期的tcp/ip协议是一个四层结构,在后来的使用过程中,借鉴OSI的七层参考模型,将网络接口层划分为物理层和数据链路层,形成一个五层结构,TCP/IP的前四层与OSI参考的前四层相对应,其功能也非常类似。


IP地址

ip地址的组成: ip地址有32位,4个二进制数组组成,每8位数用原点隔开,由于二进制不便于阅读,所以改成十进制。

ip地址的分类:ip地址包含网络地址和主机地址两部分,网络地址决定了可以分配的最大网络数,主机地址决定了一个网络中可以存在的计算机的最大数量,根据网络地址和主机地址位数的不同,IP地址又分为五类 A B C D  E  五类,常用前三种。

 

ip地址的网络地址由互联网数字分配机构统一分配,以保证ip地址的唯一性。

学会使用ipconfig命令查看网络设置

学会使用ping命令检测网络是否通畅


端口:它是一个16位的整数 ,范围是0-65535,端口是门,端口号是密码 ,是计算机与外界通信的入口和出口。


域名与DNS:域名就是www.XXX.com DNS :是解析域名的。


网络服务器:一般包含(邮件服务器,Web服务器)Web服务器由包含(Microsoft IIS,Apache,Tomcat,WebLogic ,BEA,WebSphere)等。


网络通信协议:计算机之间通信的规则。就好像我们对话使用的语言一样,是英文还是中文。

1.TCP/IP协议:规定其核心是IP协议和TCP协议

2.TCP协议:必须建立连接后,计算机才可以通信

3.UDP协议:无需建立连接,即可通信


Socket : 是一个通信的中转站用于连接客户端与服务器端       

java.net 包可以使用 


到这里在发散一张图帮助理解

 


模拟TCP协议的Socket代码:

客户端:

//模拟方法
    public void clientLink() throws IOException {
        Socket socket = new Socket("localhost",8080);
        OutputStream os = socket.getOutputStream();
        InputStream is = socket.getInputStream();
         //
        socket.shutdownOutput();
        String reply = null;
        //
        //
        //
        socket.close();
    }

   

服务器端:



    public void serveLink() throws IOException {

        ServerSocket serverSocket = new ServerSocket(8080);
        Socket socket = serverSocket.accept();
        InputStream is = socket.getInputStream();
        OutputStream os = socket.getOutputStream();
             //
            //
            //
        socket.close();
    }

 

模拟UCP协议的Socket代码:

发送端:



    private void to () throws IOException {
        InetAddress ia = null;
        String mess ="你好";
        ia = InetAddress.getByName("localhost");
        DatagramPacket dp = new DatagramPacket(mess.getBytes(),mess.getBytes().length,ia,8800);
        DatagramSocket ds = new DatagramSocket();
        ds.send(dp);
        ds.close();
    }

  

接收端:



    private void from() throws IOException {
        byte[] buf = new byte[1024];
        DatagramPacket dp= new DatagramPacket(buf,1024);

        DatagramSocket ds = new DatagramSocket(8800);
        ds.receive(dp);
        String mess = new String(dp.getData(),0,dp.getLength());
       
    }

-over.song.2022.9.20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arenaschi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值