端口号和套接字

简介: 快速学习端口号和套接字

开发者学堂课程Python入门 2020年版端口号和套接字】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10458


端口号和套接字

内容介绍

.端口

.端口号

.socket 简介

.说明

.端口

1.解释

1)两个电脑之间的软件通信,微信等是电脑A将消息发给服务器,服务器转给电脑B

2)但两电脑之间点对点聊天时,先通过ip地址找到对方电脑,再使用端口在不同的电脑之间区分程序。

3)同一台电脑之间使用 pid 来区分不同的程序

image.png

2.说明

端口就像一个房子的门,是出入这间房子的必经之路。如果一个程序需要收发网络数据,那么就需要有这样的端口

linux系统中,端口可以有65536(216次方)个之多!

既然有这么多,操作系统为了统一管理,所以进行了编号,这就是端口号


.端口号

端口是通过端口号来标记的,端口号只有整数,范围是从065535端口号不是随意使用的,而是按照一定的规定进行分配。端口的分类标准有好几种,我们这里不做详细讲解,只介绍一下知名端口和动态端口。

1.知名端口号

知名端口是众所周知的端口号,范围从01023以理解为,一些常用的功能使用的号码是估计的,好比电话号码1101008610010一样。一般情况下,如果一个程序需要使用知名端口的需要有 root 权限。

2.动态端口号

动态端口的范围是从102465535

之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。

动态分配是指当一个系统程序或应用程序程序需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。

当这个程序关闭时,同时也就释放了所占用的端口号。

3.端口号作用

我们知道,一台拥有IP地址的主机可以提供许多服务,比如 HTTP(万维网服务)FTP(文件传输) SMTP(电子邮件)等,这些服务完全可以通过1IP地址来实现。

那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号

区分不同的服务的。需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务

器时,WWW服务器使用80"端口与你的电脑通信,但你的电脑则可能使用3457"这样的端口。

 

.socket简介

1.不同电脑上的进程之间如何通信

首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的。

其实 TCP/IP 协议族已经帮我们解决了这个问题,网络层的“ip地址可以唯一标识网络中的主机,而传输层的协议+端口可以唯一标识主机中的应用进程(进程)。这样利用ip地址,协议,端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

注意:

所谓进程指的是:运行的程序以及运行时用到的资源这个整体称之为进程(在讲解多任务编程时进行详细讲解)

所谓进程间通信指的是:运行的程序之间的数据共享

2.什么是socket

socket(简称套接字)是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:

它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于Socket 来完成通信的

例如我们每天浏览网页、QQ聊天、收发email 等等。

image.png

3.创建socket

Python 中使用 socket 模块的函数 socket 就可以完成:

import socket

socket.socket(AddressFamily,Type)

说明:

函数 socketsocket 创建一个 socket,该函数带有两个参数:

Address Family:可以选择AFINET(用于Internet进程间通信)或者 AFUNIX(用于同一台机器进程间通信),实际工作中常用 AFINET

Type:套接字类型,可以是 SOCKSTREAM(流式套接字,主要用于TCP协议)或者 SOCKDGRAM(数据报套接字,主要用于UDP协议)

创建一个tcpsocket(tcp套接字)

import socket

#创建tcp的套接字

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#.这里是使用套接字的功能(省略)..

#不时候,关闭套接字s.close()

创建一个udpsocket(udp套接字)

import socket

#创建udp的套接字

s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#..这里是使用套接字的功能(省略).

#不用的时候,关闭套接字 s.close()


.说明

套接字使用流程与文件的使用流程很类似

1.创建套接字

2.使用套接字收/发数据

3.关闭套接字

相关文章
|
关系型数据库 MySQL Apache
Service Apache can not start. Reason:(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一-次。: AH00072: make_ sock
Service Apache can not start. Reason:(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一-次。: AH00072: make_ sock
228 0
|
网络协议 C语言 网络架构
【计算机网络】传输层 : 传输层概述 ( 设备层级 | 传输层功能 | TCP 协议 | UDP 协议 | 复用与分用 | 端口号 | 套接字 )
【计算机网络】传输层 : 传输层概述 ( 设备层级 | 传输层功能 | TCP 协议 | UDP 协议 | 复用与分用 | 端口号 | 套接字 )
338 0
|
网络协议 Linux 开发者
端口号和套接字 | 手把手教你入门Python之九十五
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535.端口号不是随意使用的,而是按照一定的规定进行分配。socket(简称 套接字) 是进程间通信的一种方式。
|
Android开发
Android AdbCommandRejectedException和cannot bind to套接字地址(协议/网络地址/端口)只允许使用一次
转载请标明出处: http://blog.csdn.net/DJY1992/article/details/72628622 本文出自:【奥特曼超人的博客】 安装apk时,出现错误: com.
1609 0
|
6月前
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
752 1
|
6月前
|
弹性计算 运维 数据安全/隐私保护
云服务器 ECS产品使用问题之如何更改服务器的IP地址或端口号
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
5月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
|
6月前
|
网络协议 Linux Unix
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
156 0
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解

热门文章

最新文章