共计 2922 个字符,预计需要花费 8 分钟才能阅读完成。
https://blog.csdn.net/zhihuiy…
这篇文章写的也不错,socket={ip,port}
临时不了解过程为什么要用 ip+协定+port 作为惟一标识
目录
- 网络
- IP 地址
- 端口
- socket
- 总结
1 网络
1.1 网络定义
- 网络就是一种辅助单方或者多方可能连贯在一起的工具
- 如果没有网络可想单机的世界是如许的孤独
1.2 应用网络的目标
- 就是为了联通多方而后进行通信用的,即把 数据从一方传递给另外一方
- 如果没有网络,编写的程序都是单机的,即不能和其余电脑上的程序进行通信
- 为了让在不同的电脑上运行的软件,之间可能相互传递数据,就须要借助网络的性能
1.3 总结
- 应用网络可能把多方链接在一起,而后能够进行数据传递
- 所谓的网络编程就是,让在不同的电脑上的软件可能进行数据传递,即过程之间的通信
2 IP 地址
2.1 ip 地址的作用
ip 地址:用来在网络中标记一台电脑,比方 192.168.1.1;在本地局域网上是惟一的。
2.2 ip 地址的分类
每一个 IP 地址包含两局部:网络地址和主机地址
2.2.1 A 类 IP 地址
一个 A 类 IP 地址由 1 字节的网络地址和 3 字节主机地址组成,网络地址的最高位必须是“0”
地址范畴 1.0.0.1-126.255.255.254
二进制示意为:
00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110
可用的 A 类网络有 126 个,每个网络能包容 1677214 个主机
2.2.2 B 类 IP 地址
一个 B 类 IP 地址由 2 个字节的网络地址和 2 个字节的主机地址组成,网络地址的最高位必须是“10”
地址范畴 128.1.0.1-191.255.255.254
二进制示意为:
10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
可用的 B 类网络有 16384 个,每个网络能包容 65534 主机
2.2.3 C 类 IP 地址
一个 C 类 IP 地址由 3 字节的网络地址和 1 字节的主机地址组成,网络地址的最高位必须是“110”
范畴 192.0.1.1-223.255.255.254
二进制示意为:
11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110
C 类网络可达 2097152 个,每个网络能包容 254 个主机
2.2.4 D 类地址用于多点播送
D 类 IP 地址第一个字节以“1110”开始,它是一个专门保留的地址。
它并不指向特定的网络,目前这一类地址被用在多点播送(Multicast)中
多点播送地址用来一次寻址一组计算机 s 地址范畴
224.0.0.1-239.255.255.254
2.2.5 E 类 IP 地址
以“1111”开始,为未来应用保留
E 类地址保留,仅作试验和开发用
2.2.6 公有 ip
在这么多网络 IP 中,国内规定有一部分 IP 地址是用于咱们的局域网应用,也就
是属于私网 IP,不在公网中应用的,它们的范畴是:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
留神:
IP 地址 127.0.0.1~127.255.255.255 用于回路测试,
如:127.0.0.1 能够代表本机 IP 地址,用 http://127.0.0.1 就能够测试本机中配置的 Web 服务器。
3 端口
3.1 什么是端口
- 端口就好一个房子的门,是出入这间房子的必经之路。
- 如果一个程序须要收发网络数据,那么就须要有这样的端口
- 在 linux 零碎中,端口能够有 65536(2 的 16 次方)个之多!
- 对端口进行对立编号,这就是所说的端口号
3.2 端口号
端口是通过端口号(一个整数)来标记的,范畴是从 0 到 65535
留神:
端口数不一样的 *nix 零碎不一样,还能够手动批改
3.3 端口的调配
端口号不是随便应用的,而是依照肯定的规定进行调配。端口的分类规范有好几种,笔者在这里不做具体解说,只介绍一下出名端口和动静端口
3.3.1 出名端口(Well Known Ports)
出名端口是 家喻户晓的端口号,范畴从 0 到 1023
- 80 端口调配给 HTTP 服务
- 21 端口调配给 FTP 服务
在这里为了不便了解,咱们能够将端口号设想成手机号,一些罕用的性能应用的号码是大家都晓得的,好比电话号码 110、10086、10010 一样,他们在电话中的位置和出名端口在端口的位置是相似的
个别状况下,如果一个程序须要应用出名端口的须要有 root 权限
3.3.2 动静端口(Dynamic Ports)
动静端口的范畴是从 1024 到 65535
之所以称为动静端口,是因为它个别不固定调配某种服务,而是动态分配。
动态分配是指当一个零碎程序或应用程序程序须要网络通信时,它向主机申请一个端口,主机从可用的端口号中调配一个供它应用。
当这个程序敞开时,同时也就开释了所占用的端口号
3.3 怎么查看端口
- 用“netstat -an”查看端口状态
- lsof -i [tcp/udp]:2425
4 socket(过程间通信的一种形式)
4.1 不同电脑上的过程间通信的实现
- 首要要惟一标识一个过程
- 在 1 台电脑上能够通过过程号(PID)来惟一标识一个过程,然而在网络中这行不通。
- 这就须要 TCP/IP 协定族,网络层的“ip 地址”能够 惟一标识网络中的主机,而传输层的“协定 + 端口”能够 惟一标识主机中的利用过程(过程)。
- 这样利用 ip 地址,协定,端口就能够标识网络的过程了,网络中的过程就能够利用该形式与其它过程进行交互
留神:
过程:运行的程序以及运行时用到的资源这个整体称之为过程
过程间通信指:运行的程序之间的数据共享
4.2 socket 简介
- socket()函数:用于依据指定的地址族、数据类型和协定来调配一个套接口(通信的基石是套接口,一个套接口是通信的一端)的形容字及其所用的资源
- socket(简称 套接字) 是过程间通信的一种形式,它与其余过程间通信的一个次要不同是:
它能实现不同主机间的过程间通信,咱们网络上各种各样的服务大多都是基于 Socket 来实现通信的,例如浏览网页、QQ 聊天、收发 email 等等
留神:
套接字应用流程 与 文件的应用流程很相似
- 创立套接字
- 应用套接字收 / 发数据
- 敞开套接字
5 网络通信总结
- 网络通信能够说是在网络中,晓得相互之间的“IP 地址(在网络层)”以确定互相是谁,再通过晓得要进行通信的“协定 + 端口号(在传输层)”,以确定通信单方进行通信的工具即过程,而在这过程中必然波及到套接口的形容字及其所用的资源的调配(软件及硬件),当下实现这一性能的多采纳 socket()函数。
- 具体的来说,一台领有 IP 地址的主机能够提供许多服务,比方 HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)等,这些服务齐全能够通过 1 个 IP 地址来实现。那么,主机是怎么辨别不同的网络服务呢?显然不能只靠 IP 地址,因为 IP 地址与网络服务的关系是一对多的关系。
- 实际上是通过“IP 地址 + 端口号”来辨别不同的服务的。须要留神的是,端口并不是一一对应的。比方你的电脑作为客户机拜访一台 WWW 服务器时,WWW 服务器应用“80”端口与你的电脑通信,但你的电脑则可能应用“3457”这样的端口。