网络编程基础

154 阅读3分钟

1.1 概述

地球村概念

计算机网络

是指将不同地理位置多台计算机或外部设备,通过通信线路连接,在网络通信协议等作用下,实现资源共享的目的;

网络编程目的

传播信息交流。。。

想要达到这个效果需要什么

  1. 准确定位网络上的一台主机上的某个资源:IP+端口(微信、QQ)
  2. 通信方式:TCP(打电话 -- 连接 -- 接了 -- 通话)、UDP(发短信 -- 发送了就完事了 -- 接收)

1.2 网络通信的要素

如何实现网络通信?

通信双方地址

规则:网络通信的协议

http、ftp、smtp、tcp、udp。。。

TCP/IP参考模型

image-20210717150602412

应用层:HTTP、FTP

传输层:TCP、UDP

网络层:IP

数据链路层

1.3 IP

ip地址:InetAddress

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

  • 127.0.0.1 本机IP(localhost)

  • IP的分类

    • IPv4和IPv6

      • ipv4:4个字节,每个字节0~255 127.0.0.1

      • ipv6:8个整数,128位

        2001:1f34:1789:3jgf:sdf4:sdf9:kkk4:sfgb

    • 公网和私网

      • 公共网络 ABCD类
      • 192.168.xxx.xxx 指的是特定私有区域内
    • 域名:www.baidu.com (方便记忆IP)

1.4 端口

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

  • IP是一栋楼,端口就表示每户人家;

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

  • 被规定0 ~65535

  • TCP、UDP:65535*2 (单个协议下,端口号不能冲突)

  • 端口分类

    • 公有端口:0~1023

      • HTTP:80
      • HTTPS:443
      • FTP:21
      • Telent:23
    • 程序注册端口:1024~49151

      • Tomcat:8080
      • Mysql:3306
      • Oracle:1521
    • 动态/私有:49152~65535

      #查看所有端口
      netstat -ano
      
  • 端口映射

    将消息发送至指定对应端口,该端口程序具有对应接收程序;

    本机QQ将消息发送至另一台机器上的QQ,两个QQ的端口都是一样,其他端口是无法接受到QQ的消息(除非内部集成QQ接收程序)

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. 建立服务器的端口ServerScoket
  2. 等待用户的链接 accept
  3. 接收用的消息