python网络安全协议_浅谈Python中TCP和UDP等网络编程协议

最近在学习python编程,自己稍微整理了一下这两天的学习心得

一、什么是网络编程协议

首先网络编程协议的目的是为了方便使用与管理,避免出现网络拥堵。倘若没有固定协议,就有可能会出现,如下图的情况,完全无法进行沟通,放在网络上就会出现网络堵塞,所以我们必须制定一些方案和协议来统一。

u=1374874399,2334784455&fm=173&app=25&f=JPEG?w=640&h=360&s=4394EE22550858EB02FD8D750300B070

沟通不便

二、分层模型

1) 网络分层架构

为了减少协议设计的复杂性,大多数网络模型均采用分层的方式来组织。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。每一层利用下一层提供的服务来为上一层提供服务,本层服务的实现细节对上层屏蔽。

u=4183069565,4206270744&fm=173&app=25&f=JPEG?w=420&h=286&s=81315F30599E60CA0C5DCCDA010010B3

分层模式

越下面的层,越靠近硬件,越上面的层,越接近用户。主要四层模式为:应用层,运输层,网络层,链路层。

2)链路层

链路层指定的就是mac地址,每台电脑出厂时配置的网卡对应地址都会不同,这个是一开始就决定好的,无法改变。

3)网络层

网络层主要指的就是ip地址,通过用户指的ip地址进行相对应的访问操作(ip由来等细节不做细讲,自行百度)

4)运输层

通过每个应用不同的端口号进行传输,端口号范围是从0到65535,每个端口都对应电脑上不同的进程,windows用户可以在命令提示符中输入netstat -ano看到,在本地地址冒号后面,即可看见,Linux中输入ps -auo即可,一个端口号只能服务一个进程。其中80端口分配给HTTP服务,21端口分配给FTP服务。就类似固定电话,10010,10086等。

u=3315932063,3712213041&fm=173&app=25&f=JPEG?w=640&h=330&s=01607A22011CB7CC1E71E41F0000E0C3

windows查看进程端口

5) 应用层

经过链路层,网络层,传输层,最后就是通过前面是三个来确认到最后需要传输到的应用中去

u=2845947456,3003928247&fm=173&app=25&f=JPEG?w=554&h=348&s=BDAE74321B0A54495A55D0CA0000E0B1

传输示意图

三、UDP

1)udp简介

UDP是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的协议。UDP不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

2)udp通信模型

主要客户端通过sendto(msg, (ip,port))访问,并发送消息,但不会确认是否到达,recvfrom()用来接收消息,并且会堵塞,如果一直没有消息送来,则会一直堵塞下去。服务器通过bind((ip,port))绑定ip地址和端口,注意是元组,.close用来关闭连接。(注意,网路传输中都是通过字节的方式进行传输,所以再接收和发送时都要主要转码和解码)

u=3933366175,1597044675&fm=173&app=25&f=JPEG?w=425&h=394&s=1AAA7E23598F44C800FDF5CA0000E0B1

udp通信模型

四、TCP

1)tcp简介

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通信需要经过创建连接、数据传送、终止连接三个步骤。TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中打电话。

2)tcp通信模型

tcp客服端:通过connect((ip, port))来请求连接,send()进行发送消息,recv()进行接受消息

tcp服务器: 通过bind((ip, port))绑定ip和端口,ip不写则代表默认本机所有地址,listen()控制客服端的连接数量,accept()等待阻塞,一直到客户端的到来,recv()接受消息,send()发送消息。在做多用户聊天时一定要注意accept()的位置,因为单线程每次有客户端连接都会把上次的连接断开,这里涉及到了多线程,目前正在学习中。

u=903560539,2452136018&fm=173&app=25&f=JPEG?w=480&h=456&s=1AAA7423510F40EA5CD531CE000080B1

tcp传输模型

五、TCP和UDP的优缺点

1)tcp的优点

1.1TCP采用发送应答机制

TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功。

1.2超时重传

发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。

1.3错误校验

TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

1.4流量控制和阻塞管理

流量控制用来避免主机发送得过快而使接收方来不及完全收下。

2)udp的优点

传输速度快,传输稳定,避免丢包,相对而言,udp会更加的安全一些

3)tcp不同与udp

面向连接(确认有创建三方交握,连接已创建才作传输。)

有序数据传输

重发丢失的数据包

舍弃重复的数据包

无差错的数据传输

阻塞/流量控制

4) 优劣

udp在传输方面比tcp更胜一筹,但是不能保证稳定到达用户,tcp传输慢,但是能保证消息传输到用户,但是容易丢包,导致数据被抓包

以上就是个人这两天学习udp和tcp的一些看法,还有很多不足的的地方,希望谅解,如有不足,欢迎留言。我也是学习python没多久,来和大家一起分享一下,希望和大家一起进步。还有tcp的三次握手,四次挥手,就没在此处提了,有需求的朋友可以去百度一下或者谷歌一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值