如何知道电脑ip地址

之前我们已经讨论了计算机网络的基础概念,包括OSI七层模型、TCP/IP网络体系以及网络编程入门知识。今天我们将深入探讨网络编程中经常使用的Socket,以及IP地址和端口号的定义,帮助大家加深对Socket的理解。
什么是Socket?
Socket是独立于具体协议的编程接口,在网络编程中起到关键作用。它位于OSI模型的会话层和传输层之间,是实现网络通信的重要工具。
关于Socket的类型:
流式套接字(SOCK_STREAM):这种类型的Socket基于TCP协议,提供面向连接、可靠的数据传输服务。它能够确保数据无差错、无重复发送并按顺序抵达。它还具备流量控制功能,避免数据流淹没前面的数据。数据被查看时呈现为字节流,无长度限制。
数据报套接字(SOCK_DGRAM):这种类型的Socket基于UDP协议,提供无连接服务。数据包以独立的形式发送,不保证数据的无差错传输。数据可能会丢失或重复到达,甚至顺序发送的数据可能会乱序接收。
原始套接字(SOCK_RAW):这种Socket可以直接访问较低层次的协议,例如IP和ICMP。它通常用于实现一些特殊的网络功能或协议。
接下来,我们来探讨IP地址的概念:
IP地址是网络中主机的标识,每台想要与其他机器通信的主机都必须拥有一个唯一的IP地址。IP地址通常为32位(IPV4)或128位(IPV6)。每个数据包都必须携带目的IP地址和源IP地址,路由器依靠这些信息为数据包选择最优路由。
那么,什么是端口号(PORT)呢?
端口号用于区分一台主机中接收到的数据包应该转交给哪一个进程进行处理。TCP端口号和UDP端口号是相互独立的。端口号的分配和管理由IANA(Internet Assigned Numbers Authority)负责。
众所周知端口:1-1023之间,其中1-256是众所周知的端口,如HTTP服务的80端口、FTP服务的21端口等。这些端口号已经被分配给特定的服务。
注册端口:1024-49151,这些端口号可以分配给进程或应用。当这些端口号还没有被服务器资源占用时,可以由用户的APP动态注册获得。动态端口号:49152-65535被称为动态端口号,它们一般不固定分配某种服务,而是动态分配的。一般情况下,使用大于65000的端口号可以自由使用。至此我们已完成了计算机网络传输基础知识的梳理。接下来的文章我们将介绍如何使用相关的API进行网络数据的传输,敬请关注交流。
