网络编程:专业术语(IP、端口、字节序、套接字(socket))

news/2024/7/5 7:46:34

一、IP

什么是ip:在因特网中用于区分主机的唯一标识 

​表现形式:点分形式的字符串 ” a.b.c.d“  ->192.168.16.58    0-255

ip地址分类:

IP协议是为计算机网络相互连接进行通信而设计的协议

        那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“IP地址”。由于有这种唯一的地址,才保证了    用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。

        IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
        公有地址
        公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
        私有地址
        私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
        以下列出留用的内部私有地址
        A类 10.0.0.0--10.255.255.255  网络ip   主机ip
        B类 172.16.0.0--172.31.255.255
        C类 192.168.0.0--192.168.255.255

二、端口

用于区分 主机接收到的数据该交由哪一个进程来处理

逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,

比如用于浏览网页服务的80端口,用于
FTP服务的21端口等等。
        1.端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。
        2.客户端只需保证该端口号在本机上是惟一的就可以了。客户端口号因存在时间很短暂又称临时端口号;
        3.大多数TCP/IP实现给临时端口号分配1024—49151之间的端口号。大于5000的端口号是为其他服务器预留的。
        我们应该在自定义端口时,避免使用well-known的端口。如:80、21等等

三、字节序

TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。例如上一节的UDP段格式,地址0~1是16位的源端口号,如果这个端    口号是1000(0x3e8),则地址0是0x03,地址1是0xe8,也就是先发0x03,再发0xe8,这16位在发送主机的缓冲区中也应该是低地址存        0x03,高地址存0xe8。但是,如果发送主机是小端字节序的,这16位被解释成0xe803,而不是1000。因此,发送主机把1000填到发送缓冲        区之前需要做字节序的转换。同样地,接收主机如果是小端字节序的,接到16位的源端口号也要做字节序的转换。如果主机是大端字节序的,        发送和接收都不需要做转换。同理,32位的IP地址也要考虑网络字节序和主机字节序的问题。
        
        字节序就是为了 解决由于 cpu差异化导致的整型数据存放的兼容问题?
        
        为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。
        #include <arpa/inet.h>

        uint32_t htonl(uint32_t hostlong);
        uint16_t htons(uint16_t hostshort);
        uint32_t ntohl(uint32_t netlong);
        uint16_t ntohs(uint16_t netshort);
        h表示host,n表示network,l表示32位长整数,s表示16位短整数。
        如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回,如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回。

四、套接字(socket)

套接字(socket)  进程间通信的方式之一:用于不同主机进程通信,
                用于同一个主机的进程通信:
                    传统三种:有名、无名管道、信号
                    IPC 三种:共享内存、消息队列、信号灯
                    
直译:插座:
独立于具体协议的网络编程接口
在OSI模型中,主要位于会话层和传输层之间
BSD Socket(伯克利套接字)是通过标准的UNIX文件描述符和其它程序通讯的一个方法,目前已经被广泛移植到各个平台。

文件描述符:
    非负整数(0-1023):0   1   2  
    用于内核打开正在访问的文件 ------
    
套接字类型:
    流式套接字(SOCK_STREAM)
        提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。

    数据报套接字(SOCK_DGRAM)
        提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。

    原始套接字(SOCK_RAW)
        可以对较低层次协议如IP、ICMP直接访问。


http://lihuaxi.xjx100.cn/news/109692.html

相关文章

MaxViT:多轴视觉Transformer

论文链接&#xff1a;https://arxiv.org/abs/2204.01697 代码链接&#xff1a;https://github.com/google-research/maxvit 如果进入不了github就直接在这里下载&#xff0c;不过没有权重文件&#xff0c;免费的&#xff1a;https://download.csdn.net/download/weixin_4491103…

使用布谷鸟过滤器对 logback 日志一定周期内重复异常堆栈打印进行压缩过滤

前因 前阵子日子线上有个bug&#xff0c;但是由于触发过于频繁导致日志打印全是这个bug的堆栈&#xff0c;全是重复堆栈内容日志一下变得不友好起来&#xff0c;搜索有没有什么优化办法。 偶然看到[近期业务大量突增微服务性能优化总结-2.开发日志输出异常堆栈的过滤插件]这篇…

网页批量下载图片-怎么一键快速下载网页图片的工具

网页批量下载图片&#xff0c;今天给大家分享一款免费图片批量下载软件&#xff0c;支持任意格式的图片批量下载&#xff0c;只需要输入关键词或批量导入网页链接即可批量下载图片。每个人都可以拥有各种高清图源。支持批量图片压缩/放大/添加水印等等处理/详细如图 这款免费图…

GBase8s jdbc 驱动url介绍

GBase8s jdbc 驱动url介绍 GBase8s jdbc驱动是一款实现jdbc3.0规范以及jdbc4.0绝大部分规范的标准通用接口&#xff0c;故在使用方式上同其它数据库驱动一样&#xff0c;并不存在学习成本。下面具体介绍一下使用方式 1、URL说明 标准格式如下&#xff1a; jdbc:gbasedbt-sqli:/…

渗透测试基础- - -windows网络安全常用dos命令

目录 一&#xff0c;DOS是什么 二&#xff0c;windows常用命令 1.查看系统分区 2.搜索指定文件&#xff1a;for 3.创建文件&#xff1a;echo 4.查看文件内容&#xff1a; 5.删除文件&#xff1a;del 6.隐藏文件命令&#xff1a;attrib 7.关机&#xff1a; 8.测试网络…

pytorch学习(五)——损失函数

文章目录1. 回归问题1.1 均方差1.2 L1损失1.3 平滑L1损失2. 分类问题2.1 合页损失2.2 二分类交叉熵2.3 交叉熵3. 相似度3.1 余弦相似度3.2 相对熵4. 不配合的使用1. 回归问题 1.1 均方差 均方差是回归问题中最常用的损失函数了&#xff0c;Pytorch中的均方差损失函数为 torc…

STM32L051之IWDG使用及注意事项

IWDG使用内部时钟LSI&#xff0c;频率约为37KHz。基本框图如下所示&#xff1a; 内部包含一个8位的分频器&#xff0c;支持4、8、16、32、64、128、256分频。 内部包含一个12位的向下计数器。 假如时钟频率为32K&#xff0c;那么&#xff0c;看门狗的最大计数时间为&#xff…

Safari Extension 扩展插件中关于权限的二三事(例如设置权限、权限类型等)

Safari Extension 扩展插件的权限相关的内容大致分为下面几个方面&#xff1a; 用户要掌控扩展&#xff08;Users are in control&#xff09; Safari Extension 扩展插件是要在用户控制下的&#xff0c;不能想干嘛就干嘛&#xff0c;因此扩展只有在用户进行互动之后才会运行…