分享

TCP/UDP网络编程

 精品唯居 2022-12-12 发布于北京

目录

  1. 什么是计算机网络
  2. 网络通信的两个要素
  3. IP地址
  4. 端口Port
  5. 通信协议
  6. TCP实现聊天
  7. TCP文件上传实现
  8. 初始Toncat
  9. UDP消息发送
  10. UDP聊天实现
  11. UDP多线程在线咨询
  12. URL下载网络资源

1.网络编程

1.1 概述

信件:

TCP -> 连接 -> 建立连接成功 -> 打电话

UDP -> 发送了就完事儿 -> 接收 -> 发短信

想要达到通信需要什么:

  1. 如何准确的定位网络的一台主机 -> ip地址:端口 定位到这个计算机上的某个资源
  2. 找到了这个主机,如何传输数据? -> 协议

1.2 网络通信的要素

通信双方地址(给机器定位)

ip:端口号 -> 192.168.16.124:5900 -> 某计算机上的某个具体的应用

协议(定位后如何进行通信)

图1

万物皆对象:在Java中,ip地址是一个对象,啥都是一个对象


1.3 IP

ip地址:InetAddress

  • 唯一定位网络上的计算机

  • 127.0.0.1 本机localhost

  • ip地址的分类

    • ipv4/ipv6

      • ipv4 4个字节组成,42亿个,早已用尽

      • ipv6 128位,8个无符号整数! abcde

        2001:0bb2:aaaa:0015:0000:0000:1aaa:1312
        
    • 公网(互联网)/私网(局域网)

      • ABCD类地址
      • 192.168.xx.xx 局域网
  • 域名:记忆ip问题

    • ip:www.vip.com

相关代码

InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress1);

InetAddress inetAddress3 = InetAddress.getByName("localhost");
System.out.println(inetAddress3);

InetAddress inetAddress4 = InetAddress.getLocalHost();
System.out.println(inetAddress4);

InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress2);

System.out.println(inetAddress2.getCanonicalHostName()); //规范的名字
System.out.println(inetAddress2); //ip
System.out.println(inetAddress2); //域名,或自己电脑的名字

1.4 端口

端口表示计算机上的一个程序的进程。

  • 不同的进程有不同的端口

  • 0~65535

  • TCP&UDP : 65535*2,TCP可以有一个80端口,UDP也可以,因为是不同的协议

  • 端口分类:

    • 公有端口 0~1023

    • 程序注册端口 :1024~49151,分配给用户或者程序

    • 动态、私有 :49152~65535

      netstat -ano #查看所有端口
      netstat -ano|findstr "5900" #查看指定的端口
      tesklist
      

相关代码

InetSocketAddress socketAddress1 = new InetSocketAddress("127.0.0.1",8080);
InetSocketAddress socketAddress2 = new InetSocketAddress("localhost",8080);

System.out.println(socketAddress1.getAddress());
System.out.println(socketAddress1.getHostName());
System.out.println(socketAddress1.getPort());

1.5 通信协议

TCP/IP协议簇:实际上是一组协议

  • TCP:用户传输协议
  • UDP:用户数据报协议
  • IP:网络互联协议

TCP:

  1. 打电话
  2. 连接稳定
  3. 三次握手、四次挥手
A:你瞅啥 		//发送请求,自身进入等待状态
B:瞅你咋地	   //收到请求,往回发,自身处于等待状态
A:干一架	    //发送确认信息,自身确定建立连接,B收到后也建立连接

A:我要走了		//发送请求,A进入终止等待
B:你要走了吗?	//B收到后,发送信息1给A,B进入关闭等待,再发送信息2给A,B进入最终确认
B:你真的要走了吗? //A收到信息1进入终止等待2,收到信息2后,进入时间等待并发送最后信息,2MSL后关闭连接
A:我真的要走了	//B收到最后信息,关闭连接

三次握手

四次挥手

UDP:

  1. 不连,不稳
  2. 客户端还是服务端无明确界限
  3. 准没准备好都可以发

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多