【网络编程】

什么是计算机网络

概述

**计算机网络:**是指将地理位置不同的具有独立功能的多台计算机及外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和i洗脑洗传递的计算机系统。
**网络编程的目的:**数据交换
**如何进行网络编程:**通过端口准确地定位网络上的一台主机的某个资源;

网络通信的要素

如何实现网络的通信?
通信双方地址:

  • ip
  • 端口号
    规则:网络通信的协议
    TCP/IP

小结:

  1. 网络编程中有两个主要的问题
  • 如何准确的定位到网络上的一台或者多台主机
  • 找到主机之后如何进行通信
  1. 网络编程中的要素
  • IP和端口号
  • 网络通信协议 udp, tcp
  1. 万物皆对象

IP

ip地址:InetAddress

  • 唯一定位一台网络上计算机
  • 127.0.0.1:本机localhost
  • ip地址的分类:
    • 公网(互联网)-私网(局域网)
      • ABCD类地址
      • 192.168.xx.xx专门给组织内部使用的
    • ipv4/ipv6
      • ipv4: 127.0.0.1, 4个字节组成, 0~255, 总共有42亿个, 30亿在北美,亚洲4亿。2011年用尽。
      • ipv6:128位,8个无符号整数(夸张说法:可以为地球上的每一粒沙子分配ip地址)
        • 2409:8921:a610:4263:854c:1a93:5f97:c1cf
  • 域名:记忆IP问题(ip越短越贵,20年前买房不如买ip)
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");
            System.out.println(inetAddress1);
            InetAddress inetAddress3 = InetAddress.getByName("localhost");
            System.out.println(inetAddress3);
            InetAddress inetAddress4 = InetAddress.getLocalHost();
            System.out.println(inetAddress4);

            //查询网站ip地址
            InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
            System.out.println(inetAddress2);

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

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

端口

一栋楼相当于一个大的ip,里面的每一户就可以看成是端口,电脑中的资源相当于家里的小物件。
端口表示计算机上的一个程序的进程:
- 不同的进程有不同的端口号!用来区分软件!
- 被规定最多能跑0~65535个软件
- TCP,UDP:65535*2 tcp:80, udp:80, 单个协议下,端口号不能冲突
- 端口分类
- 公有端口 0~1023
- HTTP:80
- HTTPS:443
- FTP:21
- Telent:23
- 程序注册端口 1024~49151, 分配给用户或者程序
- Tomcat: 8080
- MySQL: 3306
- Oracle: 1521
- 动态、私有:49152~65535

import java.net.InetSocketAddress;

//套接字
public class TestInetSocketAddress {
    public static void main(String[] args) {
        InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",8080);
        System.out.println(socketAddress);
        InetSocketAddress socketAddress1 = new InetSocketAddress("localhost",8080);
        System.out.println(socketAddress1);

        System.out.println(socketAddress.getAddress());
        System.out.println(socketAddress.getHostName());//地址
        System.out.println(socketAddress.getPort());//端口
    }
}

通信协议

协议:约定
**网络通信协议:**速率,传输码率,代码结构,传输控制…
TCP/IP协议簇:实际上是一组协议

  • 重要:
    • TCP:用户传输协议
    • UDP:用户数据报协议
  • 出名的协议:
    • TCP:
    • IP:网络互连协议

TCP UDP 对比
TCP:打电话

  • 连接,稳定
  • 三次握手,四次挥手
    • 三次握手
      • 最少需要三次,保证稳定连接
      • A:你瞅啥?(向对方发起连接)
      • B:瞅你咋地 (对方回应连接)
      • A:干一场! (确保发起者还在,连接建立)
    • 四次挥手
      • A:我要走了!
      • B:你真的要走了吗?
      • B:你真的真的要走了吗?
      • A:我真的要走了!
  • 客户端、服务端
  • 传输完成,释放连接,效率低

UDP:发短信

  • 不连接,不稳定
  • 客户端、服务器:没有明确的界限
  • 不管有没有准备好,都可以发给你
  • DDOS:洪水攻击(饱和攻击)一次攻击不成功便攻击多次

TCP

客户端:

  1. 连接服务器Socket
  2. 发送消息
    服务器:
  3. 建立服务的端口 ServerSocket
  4. 等待用户的链接 accept
  5. 接收用户的消息

Tomcat

服务端

  • 自定义 S
  • Tomcat服务器 S : Java后台开发
    客户端
  • 自定义 C
  • 浏览器 B
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值