计算机网络基础

1.什么是网络

  • 由点和线构成,表示诸多对象间的相互联系。

2.计算机网络

  • 为了实现资源共享和信息传递,通过通信线路连接起来的若干主句

  • 按照地理范围网络分为

    • 局域网
    • 城域网
    • 广域网
      • 互联网 Internet
      • 万维网 World Wide Web
      • 物联网 Internet of things
  • 网络编程

    • 让计算机与计算机之间建立连接、进行通信;
  • 网络模型

    • 第一层:物理层为设备之间的数据通信提供传输信号和物理介质;
    • 第二层:链路层通过规程或协议来控制传输数据的正确性;MAC
    • 第三层:网络层负责定义了能够表示所有网络节点的逻辑地址;IP地址
    • 第四层:传输层负责是否选择差错恢复协议,数据流重用,错误顺序重排;TCP、UDP
    • 第五层:会话层负责使应用建立和维持对话,使通信在失效时继续回复通信;
    • 第六层:表示层负责定义转换数据格式及加密,允许选择以二进制或者ASCII格式传输;
    • 第七层:应用层负责文件访问和管路、可靠运输服务,远程操作服务;HTTP、FTP、SMTP
  • 协议

    • 数据传输的格式 HTTP IP TCP
  • TCP-IP模型(大多数使用)

    • 应用层 囊括第五层 第六层以及第七层
    • 传输层
    • 网络层
    • 网络接口层 囊括网络模型中的第一层与第二层
  • TCP协议

    • 面向连接 可靠 基于字节流的传输层通信协议
    • 数据大小无限制
    • 建立连接过程需要三次握手
      • a向b发送连接请求
      • b向a返回同意连接信号
      • a向b发送确认连接信号
    • 断开连接需要四次挥手
      • a和b已经建立连接,需要断开连接
      • a向b发送断开连接的请求
      • b向a发送稍等请求
      • b再次向a发送同意断开连接信号
      • a向b发送确认断开的信号
  • UDP协议

    • 是一种无连接的传输层协议
    • 提供面向事务的简单不可靠信息传送服务,每个包的大小为64KB
    • 优点:支持广播发送 在一些要求不高追求效率的情况下使用
  • IP协议

    • 为TCP和UDP服务
    • TCP协议和UDP协议是基于IP协议的
    • 负责将数据从一台机器发送到另一台机器
      • 每一台电脑都有固定而且唯一的IP地址
    • IP地址分类
      • IPV4:4字节32位整数,每8位之间用圆点隔开,每8位可以表示一个0~255的十进制整数 格式:D.D.D.D 列如 255.255.255.255
        • A类:政府机构 1~126
        • B类:中型企业 128~191
        • C类:个人用户 192~223
        • D类:用于组播 224~239
        • E类:用于实验 240~255
      • IPV6:16字节128位整数,并分成8段16进制数,每16位之间用圆点隔开
  • Port端口号

    • 在通信实体上进行网络通讯程序的唯一标识;
      • 列如使用QQ从a发信息到b那么b电脑收到信息如何知道是用QQ来接收呢?就要用到端口号给信息进行标记 只有用QQ才能接收这个信号
    • 端口号
      • 公认端口:0~1023
      • 注册端口:2014~49151
      • 动态或私有端口:49152~65535
    • 常用端口
      • MySQL:3306
      • Oracle:1521
      • Tomcat:8080
      • SMTP:25
      • Web服务器:80
      • FTP服务器:21

3.网络编程

  • InerAddress

    • getLocalHost

      • 获取本机IP地址

      • InetAddress ia = InetAddress.getLocalHost();
        System.out.println(ia.getHostAddress());//IP地址
        System.out.println(ia.getHostName());//主机名
        
    • IP地址是否可达

      • InetAddress ia2 = InetAddress.getByName("www.baidu.com");
        boolean a = ia2.isReachable(2000) ;
        
        
    • 外网全部的IP地址

      • getAllByName

      • InetAddress[] ia3 = InetAddress.getAllByName("www.baidu.com");
        for (InetAddress inetAddress:ia3){
            System.out.println(inetAddress.getHostAddress());
        
      • 单个地址getByName

  • 基于TCP的网络编程

    • Socket

      • 是网络中的一个通信节点
      • 分为客户端Socket与服务器ServerSocket
      • java中的网络编程其实是调用操作系统的
      • 通信的要求:IP地址和端口号
    • 服务器端:

      • 创建ServerSocket,指定端口号

      • 调用accept等待客户端接入 accept为阻塞方法,如果客户端没有连接,方法停止

      • 使用输入流,接收请求数据到服务器

      • 使用输出流,发送响应数据给客户端

      • 释放资源

      • public class TcpServer {
            public static void main(String[] args) throws Exception {
        //               *1.创建ServerSocket 并制定端口号
                ServerSocket listener = new ServerSocket(8899);
                System.out.println("服务器已启动");
        //               * 2.调用accept接收客户端请求
                Socket socket = listener.accept();//阻塞方法 没有客户端请求 则阻塞
        //                * 3.获取输入流,读取客户端发送的请求
                InputStream inputStream = socket.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
                String str = br.readLine();
                System.out.println("客户发送:" + str);
        //                * 4.获取输出流,发送数据给客户端
        //                * 5.关闭释放资源
                br.close();
                socket.close();
                listener.close();
        
            }
        }
        
    • 客户端

      • 创建Socket,指定服务器IP+端口号

      • 使用输出流,发送请求数据给服务器

      • 使用输入流,接收响应数据到客户端

      • 释放资源

      • public class TCPClient {
            public static void main(String[] args) throws Exception{
        //                1.创建客户端套接字,并指定服务器地址和端口号
                Socket ns = new Socket("192.168.40.1",8899);
        //                * 2.获取输出流,发送数据给服务器
                OutputStream outputStream = ns.getOutputStream();
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream,"utf-8"));
                bw.write("好久不见");
        //                *3.获取输入流,读取服务器返回的数据
        //                *4.关闭释放资源
                bw.close();
                ns.close();
            }
        }
        
    • 客户端和服务器端之间

      • 服务器端的ServerSocket只是为了建立服务器端和客户端之间的3次握手(建立连接)而使用的真正的数据交流其实是Socket
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值