专业的编程技术博客社区

网站首页 > 博客文章 正文

python-网络编程总结

baijin 2025-01-18 17:14:34 博客文章 47 ℃ 0 评论

一、OSI网络协议七层模型

OSI是Open System Interconnect的缩写,意为开放式系统互联。其各个层次的划分遵循下列原则:

(1)同一层中的各网络节点都有相同的层次结构,具有同样的功能。

(2)同一节点内相邻层之间通过接口进行通信。

(3)七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。

(4)不同节点的同等层按照协议实现对等层之间的通信。

理论上有七层:物联网传话表用

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

实际应用中四层:联网专用

数据链路层、网络层、传输层、应用层


网卡是Mac地址,数据链路层,交换机用于局域网内部数据快速传输也是数据链路层

路由器是网络层。网络层判断ip地址,传输层判断端口号。http使用tcp协议

DNS 就是把域名解析成IP地址的一种技术。

主机A和B映射关系:

二、什么是端口

端口 :用来标记唯一进程的方式 交换机:组成局域网,

IP地址用来区分我和同桌的电脑,端口用来区分同桌和同桌之间进程。

查看端口的状态: netstat -an

查看哪个应用占用端口: cmd 输入命令: netstat -ano|findstr 8000

kill -9 pid 杀掉进程

taskkill /94524/

跨域问题,需要解决。同协议同域名同端口

知名端口是 0到1023是知名端口,动态端口是1024到65535

80端口分配给HTTP服务,21端口分配给FTP 服务

三、什么是IP

ip 地址 IP用来区分我和同桌的电脑,端口用来区分同桌之间进程。

用来在逻辑上标记唯一一台电脑,同一个局域网里面,不允许ip地址相同

每一个ip地址包括两部分:网络地址和主机地址

A类、B类、C类(192.168.1.106)、D类、E类

192.168.1.106

占4个字节,最大是 255,最后一个字节变,前面3个字节不变

四、tcp/ip协议

tcp 传输控制协议

udp 用户数据报协议

udp和tcp区别:

tcp是基于连接的,传输数据稳定可靠,传输文件,发送邮件,浏览网页(相当于打电话)

udp是非连接的, 优点是速度快,但是可能产生丢包,域名查询,语音通话,视屏直播等。udp还有一个非常重要的应用场景就是隧道网络,比如:vpn,VXLAN.(相当于写信)udp广播 ,数据每人发一份,只管发送 不管接收。

tcp分为三个步骤,三次握手,传输确认,四次挥手。三次握手是建立连接的过程。因为这个过程中互相发送了三包数据,所以称之为三次握手。

Mac地址和 IP 地址区别:

Mac 地址在两个设备之间通信时是变化的,而ip地址在整个通信过程中都不会发生任何变化

ip地址是在逻辑上标记一台电脑,标记逻辑上地址, ip 地址确定大局方向,一个大致方向

Mac 标记实际转发数据时的设备地址, Mac地址手拉手之间传递数据用的。

netmask:和ip地址一起来确定网络号

默认网关:发送的ip不在同一个网段内,那么会把这个数据转发给默认网关

网络层的路由器是IP寻址,,,数据链路层的交换机是MAC寻址

五、socket 简介,插口或套接字

socket 创建出来的套接字,默认是主动套接字。默认是跟别人说话的,

listen() 将主动套接字变为被动套接字

多个电脑之间通信用socket,进程之间通信的方式,能实现不同主机间进程间通信。返回值是一个套接字,s1和s2有接受发送数据功能

s1 = socket.socket(socket.AF_INET,socket.SOCK_STREAM) TCP

s2 = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) UDP



客户端代码
import socket
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect(('192.168.47.160',8000))
phone.send('hello world'.encode('utf-8'))
data = phone.recv(1024)
print('收到服务端发来的消息',data)

phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.bind(('192.168.47.160',8000))
phone.listen(5)

conn,addr = phone.accept()
msg = conn.recv(1024)
print('客户端发来的消息',msg)
conn.send(msg.upper())
conn.close()
phone.close()

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表