day27 网络通信协议 tcp/udp区别

今日主要内容:

一.网络通信协议

二.tcp udp协议下的socket 

一.网络通信协议

1.1互联网的本质就是一系列的网络协议

本机IP地址('127.0.0.1',xxxx)

互联网连接的电脑互相通信的是电信号,

互联网协议的功能: 定义计算机如何接入Internet ,以及接入Internet的计算机通信的标准.

1.2 osi七层协议

互联网协议按照功能不同分为osi七层或tcp/udp五层或tcp/ip四层

socket 在五层通讯的应用层和传输层之间(又叫socket抽象层)

socket又称为套接字,他是应用层与tcp/udp协议族通信的中间软件抽象层,他是一组接口.

套接字socket的发展史及分类

  基于文件类型的套接字家族  套接字家族的名字: AF_UNIX

  Unix一切结尾文件,基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一及其,可以通过访问同一个文件系统间接完成通信.

  基于网络类型的套接字家族  套接字家族的名字 :AF_INET

  (还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我们只使用AF_INET)

TCP/UDP的区别(重点)

1.TCP与UDP的对比

  TCP  可靠的 面向连接的协议,传输效率低全双工通信(发送缓存&接收缓存),面向字节流.

  使用TCP的应用: Web浏览器 ; 文件传输程序.

  UDP  不可靠的 无连接的服务,传输效率高,一对一 一对多 多对一 多对多 面向报文(数据包),尽最大努力服务,无拥塞控制.

  使用UDP的应用: 域名系统(DNS),视频流,IP语音包.

由下图直接比较其中的差异

TCP和UDP下socket差异对比图:

上图只是让大家感受一下TCP和UDP协议,socket工作流程的不同,两者之间的差异是 TCP需要连接,

而UDP不需要连接.

二.tcp协议下的socket 

上图就是通讯流程的大致描述

socket绑定IP和端口时可能初选下面的问题:

解决办法:

#加入一条socket配置,重用ip和端口
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
sk = socket.socket()
sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #在bind前加,允许地址重用
sk.bind(('127.0.0.1',8898))  #把地址绑定到套接字
sk.listen()          #监听链接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024)   #接收客户端信息
print(ret)              #打印客户端信息
conn.send(b'hi')        #向客户端发送信息
conn.close()       #关闭客户端套接字
sk.close()        #关闭服务器套接字(可选)

但是如果你加上了上面的代码之后出现了下面这个问题:  OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。如果出现了这个问题,只能换端口了,因为你的电脑不支持端口重用.

注 : 用socket进行通信,必须是一收一发对应.

2. TCP三次握手四次挥手(重点中的重点)

UDP协议下的socket

TCP 与 UDP 的区别 : 一个需要连接,一个不需要连接,但是TCP连接传输的速度相比较UDP慢,但是安全性比UDP高.

 

转载于:https://www.cnblogs.com/zty1304368100/p/10217017.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值