网络编程 网络编程

1.1 概述

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

  • 网络编程的目的:传播交流信息,数据交换,通信

  • 想要达到这个效果需要做什么:

    • 如何准确地定位网络上的一台主机 IP:port;
    • 找到了这个主机,如何传输数据呢?

1.2 网络通信的要素

  • 如何实现网络的通信?网络通信的要素?
    • 通信双方地址:IP,端口号
    • 规则:网络通信的协议
  • 网络编程的主要问题
    • 如何准确的定位到网络上的一台或多台主机
    • 找到主机后如何进行通信

1.3 IP

  • IP地址:

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

    • 127.0.0.1 本机localhost

    • IP地址的分类:

      • ipv4/ipv6

        • ipv4(四个字节,已用尽): 192.168.1.xxx

        • ipv6:fe80::ec8f:a251:44xx:5c2a%20

      • 公网-私网

        • 公网:互联网
        • 私网:局域网,192.168.---.---
      • 域名:记忆IP

1.4 端口

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

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

  • 被规定为0-65535

  • TCP/UDP:65536*2,单个协议下,端口号不能冲突

  • 端口分类

    • 公用端口 0-1023

      • HTTP:80
      • HTTPS:443
      • FTP:21
      • Telent:23
    • 程序注册端口:1024-49151,分配给用户或者程序

      • Tomcat:8080
      • MySQL:3306
      • Oracle:1521
    • 动态、私有:49152-65535

       netstat -ano #cmd查看所有端口
      

1.5 通信协议

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

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

  • TCP:
  • IP:网络互连协议

TCP/UDP

  • TCP:类似打电话

    • 连接、稳定

    • 三次握手 四次挥手

      最少需要三次才能保证稳定连接
      A:你瞅啥
      B:瞅你咋的
      A:干一场
      
      A:我要断开了
      B:我知道了你要断开了
      B:你真的断开了吗
      A:我真的要断开了
      
    • 客户端、服务端

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

  • UDP:类似发短信

    • 不连接、不稳定
    • 客户端、服务端:没有明确的界限
    • 不管有没有准备好,都可以发给你
    • 导弹
    • DDOS:洪水攻击,饱和攻击

1.6 TCP

客户端

1.连接服务器socket

2.发送消息

服务器

  1. 建立服务的端口ServerSocket
  2. 等待用户的链接accept
  3. 接收用的消息