网络编程

1.1 概述

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

网络编程的目的:
无线电台...传播交流信息,数据交换。通信

想要达到这个目的需要什么:
1.如何准确的定位网络上的一台主机 192.168.1.104:端口,定位到这台计算机中的资源
2.找到这个主机,如何传输数据呢?

javaweb:网页编程 B/S
网络编程:TCP/IP C/S

1.2 网络通信的要素

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

  • ip
  • 端口号
  • 192.168.1.104:8088
    规则:网络通信的协议
    TCP/IP参考模型
    image

小结:
1.网络编程有两个主要的问题
如何准确的定位到网络的一台或者多台主机
2.网络编程中的要素
- ip和端口号 IP.
- 网络通信协议 udp,
3.万物皆对象

1.3 IP

ip地址:InetAddress

  • 唯一定位一台网络上的计算机
  • 127.0.0.1:本机localhost
  • ip地址的分类
    • ipv4/ipv6
      • IPV4 127.0.0.1,四个字节组成。0~255 42亿;30亿都在北美,亚洲4亿。2011年就用尽了
      • 128位。8个无符号整数!abcde

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

    • 公网(互联网)-私网(局域网)
      • ABCD类地址
      • 192.168.xx.xx,专门给组织内部使用的
  • 域名:记忆ip问题
    • IP: www.jd.com
package com.kuangshen.Inet;

import java.net.InetAddress;
import java.net.UnknownHostException;

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.getAddress());
            System.out.println(inetAddress2.getCanonicalHostName());//规范的名字
            System.out.println(inetAddress2.getHostAddress());//ip
            System.out.println(inetAddress2.getHostName());//域名,或者自己电脑的名字
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

1.4 端口

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

  • 不同的进程有不同的端口号!用来区分软件!
  • 被规定0~65535
  • TCP,UDP:65535*2 tcp:80,udp:80吗(可以),单个协议下,端口号不能冲突
  • 端口分类
    • 公用端口0~1023
      • HTTP:80
      • HTTP:43
      • FTP:21
      • Telent:23
    • 程序注册端口:1024~49151,分配用户或者程序
      • Tomacat:8080
      • MySQL:3306
      • Oracle:1521
    • 动态、私有:49152~65535

1.5 通信协议

协议:约定,就好比我们现在说的普通话
网络通信协议:速率,传输码率,代码结构,传输控制......
问题:非常的复杂?
大事化小:分层!
TCP/IP协议簇:实际上是一组协议
重要:

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

TCP UDP对比
TCP:打电话

  • 连接,稳定

三次握手 > 四次挥手
最少需要三次,保证稳定连接!
A:你瞅啥?
B:瞅你咋滴?
A:干一场!
//
A:我要断开了
B:你真的要走了吗?
B:你真的真的要走了吗?
A:我真的要走了

  • 传输完成,释放那个连接,效率低
    UDP:发短信
  • 不连接,不稳定
  • 客户端、服务端:没有明确的界限
  • 不管有没有准备好,都可以发给你..
  • 导弹
  • DDOS:洪水攻击!(饱和攻击)

1.6 TCP

客户端
1.连接服务器Socket
2.发送消息

服务器
1.建立服务的端口 SeverSocket
2.等待用户的连接 accept
3.接收用的信息

1.7 UDP

发短信:不用连接,需要对方的地址

1.8 URL

http://www.baidu.com/
统一资源定位符:定位资源的,定位互联网的某一个资源
DNS域名解析 www.baidu.com

协议://ip地址:端口/项目名/资源

posted @ 2021-06-30 09:39  残垣断壁  阅读(106)  评论(0)    收藏  举报