Python网络编程(一)TCP协议的引入

简介: Python网络编程(一)TCP协议的引入



IP地址的概念

1. IP 地址的概念

IP 地址就是标识网络中设备的一个地址,好比现实生活中的家庭地址。

网络中的设备效果图:

2. IP 地址的表现形式

格式
xxx.xxx.xxx.xxx 
# 本文讲述的只是IPv4的点分十进制的ip地址,如192.168.0.1
# 主要有以下注意事项
# 1.每段中的值不能超过255,且范围只能是0-255,否则ip地址非法
# 2.每个ip地址被虚拟的划分成了两部分,即网络号和主机号,并且规定主机号为0时,得到的即为网络号,例如192.168.0.1,从第四个字节分开,前三个字节是网络号,最后一个字节是主机号,主机号为0即192.168.0.0为该网络的网络号.

说明:

  • IP 地址分为两类: IPv4IPv6
  • IPv4 是目前使用的ip地址
  • IPv6 是未来使用的ip地址
  • IPv4 是由点分十进制组成
  • IPv6 是由冒号十六进制组成

2. IP 地址的作用

IP 地址的作用是标识网络中唯一的一台设备的,也就是说通过IP地址能够找到网络中某台设备。

IP地址作用效果图:

3. 查看 IP 地址

  • Linux 和 mac OS 使用 ifconfig 这个命令
  • Windows 使用 ipconfig 这个命令

说明:

  • 192.168.1.107是设备在网络中的IP地址
  • 127.0.0.1表示本机地址,提示:如果和自己的电脑通信就可以使用该地址。
  • 127.0.0.1该地址对应的域名是localhost域名是 ip 地址的别名,通过域名能解析出一个对应的ip地址。

4. 检查网络是否正常

  • 检查网络是否正常使用 ping 命令

说明:

  • ping www.baidu.com 检查是否能上公网
  • ping 当前局域网的ip地址 检查是否在同一个局域网内
  • ping 127.0.0.1 检查本地网卡是否正常

端口和端口号

1. 问题思考

不同电脑上的飞秋之间进行数据通信,它是如何保证把数据给飞秋而不是给其它软件呢?

其实,每运行一个网络程序都会有一个端口,想要给对应的程序发送数据,找到对应的端口即可。

端口效果图:

即端口的出现,是解决了不同主机间的进程识别.

2. 什么是端口

端口是传输数据的通道,好比教室的门,是数据传输必经之路

那么如何准确的找到对应的端口呢?

其实,每一个端口都会有一个对应的端口号,好比每个教室的门都有一个门牌号,想要找到端口通过端口号即可。

端口号效果图:

3. 什么端口号

操作系统为了统一管理这么多端口,就对端口进行了编号,这就是端口号,端口号其实就是一个数字,好比我们现实生活中的门牌号,

端口号有65536个。

那么最终飞秋之间进行数据通信的流程是这样的,通过ip地址找到对应的设备,通过端口号找到对应的端口,然后通过端口把数据传输给应用程序

最终通信流程效果图:

4. 端口和端口号的关系

端口号可以标识唯一的一个端口。

5. 端口号的分类

  • 知名端口号
  • 动态端口号

知名端口号:

知名端口号是指众所周知的端口号,范围从0到1023。

  • 这些端口号一般固定分配给一些服务,比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务。

动态端口号:

一般程序员开发应用程序使用端口号称为动态端口号, 范围是从1024到65535。

  • 如果程序员开发的程序没有设置端口号,操作系统会在动态端口号这个范围内随机生成一个给开发的应用程序使用。
  • 当运行一个程序默认会有一个端口号,当这个程序退出时,所占用的这个端口号就会被释放。

常用的保留TCP端口号有HTTP 80、FTP 20/21、Telnet 23、SMTP 25、DNS 53等;

常用的保留UDP端口号有DNS 53、BootP 67(server)/ 68(client)、TFTP 69、SNMP 161等。

了解TCP

1. 网络应用程序之间的通信流程

之前我们学习了 IP 地址和端口号,通过 IP 地址能够找到对应的设备,然后再通过端口号找到对应的端口,再通过端口把数据传输给应用程序,这里要注意,数据不能随便发送,在发送之前还需要选择一个对应的传输协议,保证程序之间按照指定的传输规则进行数据的通信, 而这个传输协议就是我们今天学习的 TCP。

2. TCP 的概念

TCP 的英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议

面向连接的效果图:

TCP 通信步骤:

  1. 创建连接
  2. 传输数据
  3. 关闭连接

说明:

TCP 通信模型相当于生活中的’打电话‘,在通信开始之前,一定要先建立好连接,才能发送数据,通信结束要关闭连接。

3. TCP 的特点

  1. 面向连接
  • 通信双方必须先建立好连接才能进行数据的传输,数据传输完成后,双方必须断开此连接,以释放系统资源。
  1. 可靠传输
  • TCP 采用发送应答机制
  • 超时重传
  • 错误校验
  • 流量控制和阻塞管理

了解soket

1. 问题思考

到目前为止我们学习了 ip 地址和端口号还有 tcp 传输协议,为了保证数据的完整性和可靠性我们使用 tcp 传输协议进行数据的传输,为了能够找到对应设备我们需要使用 ip 地址,为了区别某个端口的应用程序接收数据我们需要使用端口号,那么通信数据是如何完成传输的呢?

使用 socket 来完成

2. socket 的概念

socket (简称 套接字) 是进程之间通信一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间想要进行网络通信需要基于这个 socket

插座效果图:

socket 效果图:

个人认为,套接字这个翻译的并不是很好.

TCP网络应用的开发流程

1. TCP 网络应用程序开发流程的介绍

TCP 网络应用程序开发分为:

  • TCP 客户端程序开发
  • TCP 服务端程序开发

说明:

客户端程序是指运行在用户设备上的程序 服务端程序是指运行在服务器设备上的程序,专门为客户端提供数据服务。

2. TCP 客户端程序开发流程的介绍

步骤说明:

  1. 创建客户端套接字对象
  2. 和服务端套接字建立连接
  3. 发送数据
  4. 接收数据
  5. 关闭客户端套接字

3. TCP 服务端程序开发流程的介绍

步骤说明:

  1. 创建服务端端套接字对象
  2. 绑定端口号
  3. 设置监听
  4. 等待接受客户端的连接请求
  5. 接收数据
  6. 发送数据
  7. 关闭套接字
目录
相关文章
|
12天前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
48 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
|
14天前
|
缓存 算法 物联网
基于AODV和leach协议的自组网络平台matlab仿真,对比吞吐量,负荷,丢包率,剩余节点个数,节点消耗能量
本系统基于MATLAB 2017b,对AODV与LEACH自组网进行了升级仿真,新增运动节点路由测试,修正丢包率统计。AODV是一种按需路由协议,结合DSDV和DSR,支持动态路由。程序包含参数设置、消息收发等功能模块,通过GUI界面配置节点数量、仿真时间和路由协议等参数,并计算网络性能指标。 该代码实现了节点能量管理、簇头选举、路由发现等功能,并统计了网络性能指标。
134 73
|
12天前
|
监控 网络协议 网络性能优化
如何办理支持UDP协议的网络
在当今网络环境中,UDP(用户数据报协议)因传输速度快、延迟低而广泛应用于在线游戏、视频流媒体、VoIP等实时服务。本文详细介绍了办理支持UDP协议网络的方法,包括了解UDP应用场景、选择合适的ISP及网络套餐、购买支持UDP的设备并进行优化设置,以及解决常见问题的策略,帮助用户确保网络稳定性和速度满足实际需求。
|
11天前
|
网络协议 网络安全 网络架构
分布式基础-网络通信协议讲解
分布式基础-网络通信协议讲解
分布式基础-网络通信协议讲解
|
15天前
|
网络协议 Python
告别网络编程迷雾!Python Socket编程基础与实战,让你秒变网络达人!
在网络编程的世界里,Socket编程是连接数据与服务的关键桥梁。对于初学者,这往往是最棘手的部分。本文将用Python带你轻松入门Socket编程,从创建TCP服务器与客户端的基础搭建,到处理并发连接的实战技巧,逐步揭开网络编程的神秘面纱。通过具体的代码示例,我们将掌握Socket的基本概念与操作,让你成为网络编程的高手。无论是简单的数据传输还是复杂的并发处理,Python都能助你一臂之力。希望这篇文章成为你网络编程旅程的良好开端。
37 3
|
14天前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
49 1
|
11天前
|
安全 算法 网络安全
无线网络中的WEP协议及其安全性问题
无线网络中的WEP协议及其安全性问题
29 0
|
移动开发 网络协议 Linux
Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)
Python网络编程 Python小项目 Python网盘 Python HTTP请求服务端
2142 0
|
网络协议 Python Unix
下一篇
无影云桌面