Python 网络编程 TCP/UDP 详细基础

目录

网络编程

1.网络编程基础知识

1.1 什么是网络

1.2 网络协议

OSI 7层模型

TCP/IP模型

1.3 Linux Windows 命令行查看网络信息

1.4 IP地址

1.4.1 概念:

1.4.2 IP地址分类:

1.5 端口 

1.5.1 概念

1.6 服务器和客户端

1.6.1 服务端(Server):

1.6.2 客户端(Client) :

2.传输方法

2.1套接字简介

2.2 套接字类型

1. 流套接字(SOCK_STREAM)

2. 数据报套接字(SOCK_DGRAM)

3. 原始套接字(SOCK_RAW)

2.3 UDP套接字编程

2.3.1 UDP套接字特点

2.3.2 UDP套接字传输服务端客户端流程图

2.3.3 UDP实现代码

2.4  TCP 传输方法

2.4.1 TCP传输特点

2.4.2 TCP套接字传输服务端客户端流程图

三次握手(建立连接)

四次挥手(断开连接)

 2.4.3 TCP服务端(实现代码)

2.4.4 TCP客户端(实现代码)

2.4.5 TCP套接字细节

2.5 TCP与UDP对比


网络编程

1.网络编程基础知识

1.1 什么是网络

什么是网络 : 计算机网络功能主要包括实现资源共享,实现数据信息的快速传递。 

1.2 网络协议

什么是网络协议:在网络数据传输中,都遵循的执行规则。
网络协议实际上规定了每一层在完成自己的任务时应该遵循什么规范。
需要应用工程师做的工作 : 编写应用工功能,明确对方地址,选择传输服务

OSI 7层模型

好处
1. 建立了统一的通信标准
2. 降低开发难度,每层功能明确,各司其职
3. 七层模型实际规定了每一层的任务,该完成什么事情

TCP/IP模型

七层模型过于理想,结构细节太复杂
在工程中应用实践难度大
实际工作中以 TCP/IP 模型为工作标准流程

1.3 Linux Windows 命令行查看网络信息

Linux: ifconfig

windows: ipconfig

开/关网卡:sudo ifconfig ###(网卡名) up/down

1.4 IP地址

1.4.1 概念:

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

IP地址即在网络中标识一台计算机的地址编号。

1.4.2 IP地址分类:

IPv4 : 192.168.1.5
IPv6 :fe80::80a:76cf:ab11:2d73
IPv4 特点
分为4个部分,每部分是一个整数,取值分为0-255
IPv6 特点(了解)  
分为8个部分,每部分4个16进制数,如果出现连续的数字 0 则可以用 ::省略中间的0

公网IP和内网IP:
公网 IP 指的是连接到互联网上的公共 IP 地址,大家都可以访问。(将来进公司,公司会
申请公网 IP 作为网络项目的被访问地址)
内网 IP 指的是一个局域网络范围内由网络设备分配的 IP 地址。

TCP/IP协议 之IPV4与IPV6的区别;5G无线通信与4G的典型区别有哪些?_洋葱专栏-有灵魂的程序员-CSDN博客

1.5 端口 

1.5.1 概念

端口:网络地址的一部分,在一台计算机上,每个网络程序对应一个端口

如果把IP地址比作一间房子 ,端口就是出入这间房子的门。

真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。

我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。

那么,主机是怎样区分不同的网络服务呢?

显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。

需要注意的是,端口并不是一一对应的。

比如你的电脑作为客户机访 问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信

  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的网络编程主要使用TCP/IP协议栈。TCP/IP协议栈是一个网络协议族,包含了多种网络协议。其中最常用的是TCPUDP协议。 Python提供了socket模块,可以使用它来实现网络编程。socket模块提供了各种功能来创建和使用套接字(socket)。套接字是用于网络通信的一种机制,类似于电话中的插头和插座。 下面是一个简单的TCP/IP客户端和服务器的例子: 服务器端: ```python import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('localhost', 8888)) s.listen(5) while True: conn, addr = s.accept() print('Connected by', addr) while True: data = conn.recv(1024) if not data: break conn.sendall(data) conn.close() ``` 客户端: ```python import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('localhost', 8888)) s.sendall(b'Hello, world') data = s.recv(1024) s.close() print('Received', repr(data)) ``` 在服务器端,我们首先创建了一个套接字,并且绑定到了本地地址和端口。然后我们开始监听连接,当有客户端连接时,我们打印出客户端的地址并开始接收数据。如果客户端发送了空数据,则关闭连接。 在客户端,我们创建了一个套接字并连接到服务器。然后我们发送了一条消息,并等待服务器的响应。最后,我们关闭了连接。 这只是一个简单的例子,实际中可能会有更多的代码来处理连接的错误和异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值