kuangshenshuo-网络编程-IP、端口及通信协议

    科技2025-11-05  12

    网络编程 -> IP、端口、通信协议

    1. 概述

    计算机网络

    计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

    网络编程的目的

    传播交流信息

    数据交换

    通信

    网络编程中的两个主要问题:

    如何准确定位网络上的一台或多台主机,以及定位到这个计算机上的某个资源?

    找到了这个主机,如何传输数据?

    JavaWeb 是网页编程,B/S架构;网络编程是针对TCP/IP的C/S架构;

    2. 网络通信的要素

    通信双方的地址:

    IP端口号

    规则:即网络通信协议

    TCP/IP参考模型

    OSI七层网络模型TCP/IP四层概念模型对应网络协议应用层应用层HTTP、TFTP、FTP、NFS、WAIS、SMTP表示层Telent、Rlogin、SNMP、Gopher会话层SMTP、DNS传输层传输层TCP、UDP网络层网络层IP、ICMP、ARP、RARP、AKP、UUCP数据链路层数据链路层FDDI、Ethernet、Arpanet、PDN、SLIP、PPP物理层IEEE 802.1A、IEEE 802.2 ~ IEEE 802.11

    3. IP

    IP地址的类:java.net.InetAddress

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

    127.0.0.1:本机 LocalHost

    分类:

    IP地址分类

    IPV4: 4个字节组成,0~255, 42亿~ (127.0.0.1)亚洲4亿,2011年就用尽了

    IPV6:128位,8个无符号整数 (fe80::b075:f4c1:c098:ad31%12),

    2001:0bb2:aaaa:0015:0000:0000:1aaa:1312

    公网和私网分类

    公网:互联网; 私网:局域网192.168.XX.XX 专门给组织机构用的A类:1.0.0.0 ~ 127.255.255.255(二进制表示为:00000001 00000000 00000000 00000000 - 01111111 11111111 11111111 11111111),最后一个是广播地址。B类:128.0.0.0 ~ 191.255.255.255(二进制表示为:10000000 00000000 00000000 00000000----10111111 11111111 11111111 11111111), 最后一个是广播地址。C类:192.0.0.0 ~ 223.255.255.255(二进制表示为: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。D类:D类IP地址被叫做多播地址(multicast address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0 ~ 239.255.255.255。

    域名:记忆IP问题!

    www.baidu.com 61.135.185.32 import java.net.InetAddress; import java.net.UnknownHostException; //测试IP public class TestInetAddress { public static void main(String[] args) { try { //查询本机地址 //InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1"); //InetAddress inetAddress1 = InetAddress.getByName("localhost"); InetAddress inetAddress1 = InetAddress.getLocalHost(); System.out.println(inetAddress1); //查询网站IP地址 InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com"); System.out.println(inetAddress2); //www.baidu.com/61.135.185.32 //常用方法 System.out.println(inetAddress2.getAddress()); System.out.println(inetAddress2.getCanonicalHostName()); //获得规范的名字 System.out.println(inetAddress2.getHostAddress()); //IP System.out.println(inetAddress2.getHostName()); //域名 } catch (UnknownHostException e) { e.printStackTrace(); } } }

    4. 端口

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

    不同的进程有不同的端口号,用来区分软件

    端口被规定0~65535

    TCP端口、UDP端口;单个协议下,端口号不能冲突

    分类:

    公有端口:0~1023

    HTTP:80HTTPS: 443FTP : 21Telent:23

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

    Tomcat:8080MySQL:3306Oracle:1521

    动态、私有端口:49152~65535

    netstat -ano #查看所有端口 netstat -ano|findstr "5900" #查看指定的端口 tasklist|findstr "11092" #查看指定端口的进程

    Ctrl + Shift + Esc 打开任务管理器

    import java.net.InetSocketAddress; public class TestInetSocketAddress { public static void main(String[] args) { InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",8080); InetSocketAddress socketAddress2 = new InetSocketAddress("localhost",8080); System.out.println(socketAddress); //127.0.0.1:8080 System.out.println(socketAddress2); //localhost/127.0.0.1:8080 System.out.println(socketAddress.getAddress()); System.out.println(socketAddress.getHostName()); //127.0.0.1 System.out.println(socketAddress.getPort()); //8080 } }

    5. 通信协议

    网络通信协议:速率、传输码率、代码结构、传输控制…

    由于太复制,分层! TCP/IP协议簇

    重要的协议:

    TCP:用户传输协议UDP:用户数据报协议

    出名的协议:

    TCPIP:网络互联协议

    TCP & UDP 对比

    TCP :打电话

    连接,稳定;

    三次握手,四次挥手

    A: 你瞅啥? B: 瞅你咋地? A: 干一场! A: 我要走了 B: 你真的要走了吗 B: 你真的真的要走了吗 A: 我真的要走了

    客户端、服务端

    传输完成,释放连接,效率低

    UDP:发短信

    不连接、不稳定客户端、服务端没有明确的界限不管有没有准备好,都可以发送
    Processed: 0.010, SQL: 9