20. 网络编程

一、什么网络通信

  计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便的互相传递信息、共享硬件、软件、数据信息等资源。网络编程直接或间接地通过网络协议与其它计算机实现数据交换,进行通信。

OSI参考模型 TCP/IP参考模型 TCP/IP参考模型各层对应协议
应用层 应用层 HTTP、FTP、Telnet、DNS……
表示层
会话层
传输层 传输层 TCP、UDP……
网络层 网络层 IP、ICMP、ARP……
数据链路层 物理+数据链路层 Link
物理层

  OSI 七层模型各层的作用:

  • 物理层(Physical Layer):负责原始比特流。它涉及的是物理设备及介质,如电缆类型、电信号传输和接收等。
  • 数据链路层(Data Link Layer):确保物理链路上的无误传输。它提供了如帧同步、流量控制和错误检测等功能。
  • 网络层(Network Layer):负责数据包从源到目的地的传输和路由选择。它定义了地址和路由的概念,如 IP 协议。
  • 传输层(Transport Layer):提供端到端的数据传输服务,保证数据的完整性。它定义了如 TCP 和 UDP 协议。
  • 会话层(Session Layer):管理绘画,控制建立、维护和终止会话。
  • 表示层(Presentation Layer):处理数据的表示、编码和解码,如加密和解密。
  • 应用层(Applicaton Layer):提供网络服务给终端用户的应用程序,如 HTTP、FTP、SMTP 等协议。

二、IP和端口号

 在通信时,通信双方必须知道对方的标识。互联网上每个计算机的唯一标识就是 IP 地址。IP 地址实际上就是一个 32 位整数(IPv4),它是以字符串表示的 IP 地址。

  IP 协议负责把整个数据从一台计算机通过网络发送到另一台计算机。数据被分割成一小块一小块,然后通过 IP 包发送出去。由于互联网链路复杂,两台计算机之间经常有多条线路,因此,路由器就负责决定如何把一个 IP 包转发出去。IP 包的特点就是按快发送,途径多个路由,但不保证都能到达,也不能保证顺序到达。

  • IP地址:InetAddress
    • 唯一的标识 Internet 上的计算机(通信实体)
    • 本地回环地址(hosAddress):127.0.0.1 主机名(hostName):localLost
    • IP地址分类方式1:IPV4 和 IPV6
      • IPV4:4个字节组成,大概42亿,其中 30 亿大概在北美,亚洲 4 亿。2011 年已经用尽。以点分十进制表示
      • IPV6:128位(16个字节),写成 8 个无符号整数,每个整数用四个十六进制位标识,数之间用冒号分开
    • IP地址分类方式2:公网地址(万维网使用)和 私有地址(局域网使用)
      • 192.168. 开头的就是 私有地址,范围即为 192.168.0.0 ~ 192.168.255.255,专门为组织机构内部使用
  • 端口号:标识正在计算机上运行的进程(程序)
    • 不同的进程有不同的端口号
    • 被规定为 16 位的整数 0 ~ 65535
    • 端口分类:
      • 公认端口:0 ~ 1023。被预先定义的服务通信占用
      • 注册端口:1024 ~ 49151。分配给用户进程或应用程序
      • 动态/私有端口:49152 ~ 65535
  • 端口号与 IP 地址的组合得出一个网络套接字:Socket

三、网络协议

  计算机网络中实现通信必须有一些规定,即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等指定标准。在指定协议时,把复杂成份分解成一些简单的份,在将它们复合起来。最常用的复合方式是层次方式,即 同层间可以通信、上一层可以调用下一层,而与下一层不发生关系。各层互不影响,利于系统的开发和扩展。

  • 传输层协议中有两个重要的协议:
    • 传输控制协议 TCP(Transmission Control Protocol)
      • 使用 TCP 协议前,须建立 TCP 连接,形成传输数据通道
      • 传输前,采用“三次握手”的方式,点对点通信、是可靠的
      • TCP 协议进行通信的两个应用进程:客户端、服务端
      • 在连接中可进行大数据量的传输
      • 传输完毕,需释放已建立的连接,效率低
    • 用户数据报协议 UDP(User Datagram Protocol)
      • 将数据、源、目的封装成数据包,不需要建立连接
      • 每个数据包的大小限制在 64K 内
      • 发送不断对方是否准备好,接收方收到也不确认,故是不可靠的
      • 可以广播发送
      • 发送数据结束时无需释放资源,开销小,速度快
  • 网络互联协议 IP(Internet Protocol)是网络层的组要协议,支持网间互联的数据通信
  • TCP/IP 协议模型从更使用的角度出发,形成了高效的四层体系结构,即 物理链路层IP层传输层控制层

四、套接字编程

  套接字(Socket)是计算机网络数据通信的基本概念和编程接口,它允许不同主机上的进程(运行中的程序)通过网络进行数据交换。它为应用软件提供了发送和接收数据的能力,使得开发者可以在不用深入了解底层网络细节的情况下进行网络编程。

  一个套接字主要由以下三个属性组成:

  • 网络地址:通常是 IP 地址,用于表示网络上的设备。
  • 端口号:用于表示设备上的特定应用或进程。端口号是一个 16 位的数字,范围从 0 到 65535。
  • 协议:如 TCP(传输控制协议)或 UDP(用户数据包协议),定义了数据传输规则和格式。

  根据数据传输方式的不同,主要有两种类型的套接字:

  • 流套接字(Stream Sockets):基于 TCP 协议,提供面向连接、可靠的数据传输服务。数据像流水一样连续传输,接收方按发送顺序接收数据,适用于需要准确无误传输数据的应用,如网页服务器。
  • 数据套接字(Datagram Sockets):基于 UDP 协议,提供无连接的数据传输服务。每个报文段独立传输,可能丢失或无法保证顺序,适用于对传输速度要求高但可以容忍一定丢包率的应用,如在线视频会议。

  套接字通过封装 TCP/IP 协议细节,提供了一组 API,允许应用程序创建套接字、绑定地址和端口、监听连接、接受连接、发送和接收数据等。在网络编程中,通常一个套接字负责监听和接收外部连接(服务器套接字),另一个套接字负责发起连接(客户端套接字)。

posted @   星光映梦  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2023-02-17 03. 关键字与保留字
点击右上角即可分享
微信分享提示