【TCP/IP】地址族与数据序列 I 您所在的位置:网站首页 端口号21 【TCP/IP】地址族与数据序列 I

【TCP/IP】地址族与数据序列 I

2023-06-13 16:51| 来源: 网络整理| 查看: 265

目录

1. IP和端口号

1.1 网络地址(Internet Address)

1.2 网络地址分类与主机地址边界

1.3 用于区分套接字的端口号

1.4 IPv4地址的结构体

1.5 结构体sockaddr_in成员分析

I. 成员sin_family

II. 成员sin_port

III. 成员sin_addr

Ⅳ. 成员sin_zero

1. IP和端口号

IP是Internet Protocol(网络协议)的简写,是为收发网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的序号。

1.1 网络地址(Internet Address)

为了使得计算机能够链接到网络并收发数据,必须向其分配IP地址。IP地址分为两类:

IPv4 4字节地址族IPv6 16字节地址族

IPv4与IPv6的差别主要是表示IP地址所用的字节数,目前通用的地址族为IPv4。

IPv4标准的4字节IP地址分为网络地址和主机(计算机)地址,且分为A、B、C、D、E等类型。下列图中展示的是IPv4地址族,E这一类地址省略了,因为不常用。

网络地址(网络ID)视为区分网格而设置的一部分IP地址。

而如果想构建网络,需要一种物理设备完成外网与本网主机之间的数据交换,这种设备可以是路由器或交换机。

1.2 网络地址分类与主机地址边界

通过IP地址的第一个字节即可判断网络地址占用的字节数,

A类地址的首字节范围:0~127B类地址的首字节范围:128~191C类地址的首字节范围:192~223

另外,A类地址首位是0开始,B类前2位是以10开始,C类地址的前3位是以110开始

正因如此,通过套接字收发数据时,数据传到网络后即可轻松找到正确的主机。

1.3 用于区分套接字的端口号

IP用于区分目标主机,只要有IP地址就能向目标主机传输数据,但仅凭这些无法传输给最终的应用程序。

计算机中一般会配有NIC(Network Interface Card,网络接口卡)数据传输设备。通过NIC向计算机内部传输数据时就会用到IP。操作系统负责把传递到内部的数据适当分配给套接字,然后通过端口号将该数据传输给相应端口的套接字,以进一步区分不同的应用程序。

端口号的设计目的是为了在同一操作系统下区分不同的套接字。另外,端口号由16位构成,可分配的端口号范围是0~65535。其中0~1023是知名端口(Well-known Port),主要分配给特定应用程序。虽然端口号不能重复,但TCP套接字和UDP套接字不会共用端口号,允许重复。比如由TCP套接字使用9190号端口,那么其他TCP套接字就无法使用该端口号,而UDP套接字可以使用。

数据传输目标地址需同时包含IP地址和端口号,否则,数据将无法传输到制定的目标应用程序中。

1.4 IPv4地址的结构体

其中结构体in_addr定义如下,用来存放32位IP地址

在这些结构体中出现的uint16_t、in_addr_t等类型参考的是POSIX(Portabe Operating System Interface,可移植操作系统接口)。数据类型如下:

1.5 结构体sockaddr_in成员分析 I. 成员sin_family

        成员所需要传入的值需要参照地址族(Address Family),定义名称及含义如下表:

        AF_LOCAL是为了说明多种地址族而添加的。

II. 成员sin_port

        用以保存16位端口号,以网络字节序进行保存

III. 成员sin_addr

        保存32位IP地址信息,且也以网络字节序保存。

Ⅳ. 成员sin_zero

        无特殊含义。只为使结构体sockaddr_in的大小与sockaddr结构体保持一致而插入的成员。

资料引用出处 - 尹圣雨老师的《TCP&IP网络编程》 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有