【Linux Socket 编程入门】03 - 关于IP,Subnet,Port你应该知道的那些事儿
来源:互联网 发布:python cookbook mobi 编辑:程序博客网 时间:2024/06/05 18:03
本文主要介绍IP地址的分类,子网,子网掩码,端口号(port)等相关知识,这些知识都属于socket编程最最基本的东西。
(一) IP地址的分类
目前,IP地址分为两类,IPv4 (Internet Protocol Version 4)与IPv6 (Internet Protocol Version 6).
IPv4
IPv4是以点号分隔的一组数字,比如192.168.1.1。IPv4的地址由4个bytes 共32 bits组成,byte之间由点号隔开。但是IPv4所能表示的IP地址非常有限,现目前通常利用NAT(Network Address Translationt),DHCP动态主机设置协议 等技术来拓宽IPv4的地址。
IPv6
由于IPv4数量的限制,IPv6应运而生。 IPv6的地址拓展到128 bits,比IPv4整整多了96 bits。IPv6能够表示的IP数目为2^128,这几乎是一个庞大的天文数字了。
IPv6地址通常由16进制数表示,以冒号隔开,比如 :
0001:0db8:c9d2:aee5:73e3:934a:a5ae:9551
IPv6地址也可以有缩写,我们把两个冒号之间的2 bytes的数据称为byte-pair。如果byte-pair数字全部为0,则可以省略这个byte-pair,用两个冒号代替。同时,也可以省略每个byte-pair开头的0,举例如下:
3002:0db8:c9d2:0012:0000:0000:0000:0051 = 3002:db8:c9d2:12::513002:0db8:ab00:0000:0000:0000:0000:0000 = 3002:db8:ab00:: 0000:0000:0000:0000:0000:0000:0000:0001 = ::1
(二) 子网(subnet)
为了对IP地址进行有效的管理,常常将IP地址分成两个部分,一部分称为“网络部分”(network portion),另一部分称为“主机部分”(host portion)。不同的子网的网络部分和主机部分的byte数不一样,目前通常情况下将子网分为三种类型:
- class A:网络部分占 1 个byte,主机部分占 3 个bytes。
- class B:网络部分占 2 个bytes,主机部分占 2 个bytes。
- class C:网络部分占 3 个bytes,主机部分占 1 个byte。
子网掩码
对于三种类型(class A,B,C)的网络部分,通常用子网掩码来表示。子网掩码与IP地址进行按位与(bitwise-AND)操作,能够获得网络部分的数字。比如对于class C的IP地址,子网掩码通常为:255.255.255.0。如果IP地址为192.168.1.108,与子网掩码进行按位与操作,得到网络部分为:192.168.1.0。
IPv4中常见的特殊IP地址
点击查看:IPv4常见的特殊地址
(三) 端口号(port)
端口号是一个16 bits的数,它主要在socket编程中,与IP地址搭配,定位到具体的应用。打个比方,IP地址就像是一条街道的地址,而端口号则表示这条街道上具体某一家人的门牌号。这样有了街道地址和门牌号,就能知道具体是和谁通信了。对应到我们的计算机上,同一个计算机可能有多个网络应用程序,比如邮件,和web浏览器等,但是同一台计算机只有一个IP地址,这个时候,就是靠端口号来进行区分的。
很多应用程序都有自己默认的端口号,在linux下面,可以通过/etc/services查看。比如常见应用的端口号:
- HTTP(web)端口号为 80.
- telnet 端口为 23.
- SMTP端口为 25.
- ...
注意:1024以下的端口号通常认为是保留的。通常为一些需要特殊OS服务的应用而保留。
0 0
- 【Linux Socket 编程入门】03 - 关于IP,Subnet,Port你应该知道的那些事儿
- 关于Socket编程你应该知道的
- 你应该知道的active code,关于cmd黑窗口那些事儿
- 你不知道XML编程的那些事儿(一)
- 你不知道XML编程的那些事儿(二)
- 关于Tomcat,你必须知道的那些事儿
- 关于 Android N 那些你不知道的事儿
- 关于DevOps,你不知道的那些事儿
- java中应该知道的那些事儿
- 学习Linux你必须知道的那些事儿
- 学习Linux你必须知道的那些事儿
- 学习Linux你必须知道的那些事儿
- 学习Linux你必须知道的那些事儿
- 关于 MySQL 密码你应该知道的那些事
- 关于SQL注入,你应该知道的那些事
- 关于MySQL密码你应该知道的那些事
- 关于Epoll,你应该知道的那些细节
- 关于求职你应该知道的那些事
- Android开发奇葩问题整理
- hdu 4738 Caocao's Bridges(Tarjan求无向图的桥)
- POJ 2186 Popular Cows(强连通分量Tarjan算法)
- Windows10中iTunes不能识别iPad的解决方法
- lie groups for 2d and 3d transformations
- 【Linux Socket 编程入门】03 - 关于IP,Subnet,Port你应该知道的那些事儿
- 绕过网站安全狗拦截,上传Webshell技巧总结(附免杀PHP一句话)
- 28.java多线程实现文件的下载
- Faded 英文说唱版
- 简略git push步骤
- 安卓手机的后门控制工具SPADE
- Linux进程隐藏的一种实现思路
- Leetcode 337. House Robber III
- 乌克兰又断电了,看Ukrenergo断电事件的技术分析与防护方案