关于socket:网络与socket

11次阅读

共计 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”这样的端口。
正文完
 0