网络编程(入门)

网络编程

1.1 概述

计算机网络:

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

 

网络编程的目的:

无线电台---传播交流信息,数据交换。 通信

 

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

1.如何准确的定位网络上的一台主机 192.168.0.1:端口,定位打这台计算机上的某个资源

2.找到这个主机如何传输数据

 

Javaweb: 网页编程 B/S

网络编程:TCP/IP C/S

 

1.2网络通信的要素

如何实现网络的通信?

通信双方的地址:
  • ip

  • 端口号

  • 192.168.2.1:8080

规则:网络通信的协议

TCP/IP 参考模型:

 

小结:

1.网络编程中有两个主要的问题

  • 如何准确定位到网络上的一台或多台计算机

  • 找到主机后如何进行通信

2.网络编程中的要素

  • IP 和端口号

  • 网络通信协议 UDP/TCP

3.万物皆对象

1.3 IP

IP地址: InetAddress

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

  • 127.0.0.1 本机:localhost

  • IP的地址分类:

    • Ipv4/ipv6

      • IPV4 127.0.0.1 4个字节组成 0~256 42亿; 30亿在北美,4亿在亚洲。2011年用尽

      • IPV6 : 128位 8个无符号整数

    • 公网(互联网)-私网(局域网)

       

1.4 端口

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

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

  • 被规定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

      • Orcale :1521

    • 动态、私有:49152~65535

      netstat -ano #查看所有的端口
      netstat -ano|findstr "8080" #查看指定的端口
      tasklist|findstr "8080" #查看指定的端口

       

1.5 通信协议

协议:约定,就好比我们说的普通话

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

问题:非常复杂

大事化小:分层

Tcp/IP协议簇:实际上是一组协议

重要:

  • TCP :用户传输协议

  • CDP:用户数据报协议

tcp 和 udp对比

tcp: 打电话

  • 连接,稳定

  • 三次握手,四次挥手

  • 客户端、服务端

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

udp:发短信

  • 不连接,不稳定

  • 客户端、服务端:没有明确界限

  • 不管有没有准备好,都可以发送给你

 

1.6 TCP

客户端

  • 连接服务器 Socket

  • 发送消息

服务端

  • 建立服务的端口 ServerSocket

  • 等待用户的连接 accept

  • 接受用的消息

1.7 UDP

主要用到两个类DatagramPacket和DatagramSocket,下面分别介绍。

DatagramSocket

构造方法:

DatagramSocket() ~ 构造数据报套接字并将其绑定到本地主机上任何可用的端口。

protected DatagramSocket(DatagramSocketImpl impl) ~创建带有指定 DatagramSocketImpl (数据报和多播套接字实现的抽象基类,可以通过它将数据报套接字绑定到本地端口和地址。)的未绑定数据报套接字。

DatagramSocket(int port) ~创建数据报套接字并将其绑定到本地主机上的指定端口。 DatagramSocket(int port, InetAddress laddr) ~创建数据报套接字,将其绑定到指定的本地地址。

DatagramSocket(SocketAddress bindaddr) ~创建数据报套接字,将其绑定到指定的本地套接字地址。 (SocketAddress 作为一个抽象类,应通过特定的、协议相关的实现为其创建子类。 它提供不可变对象,供套接字用于绑定、连接或用作返回值。 )

DatagramSocket(DatagramSocketImpl impl)和DatagramSocket(SocketAddress bindaddr)就是通过一个对象来进行本地端口和地址的绑定……。

DatagramPacket

此类表示数据报包。

数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证

 

 

原文地址:https://www.cnblogs.com/yhc-love-cl/p/13502311.html