python 网络通信协议/TCP,UDP区别

一.osi七层协议

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

协议具体内容

各层的功能简述:
    【1】物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换),这一层的数据叫做比特。

  【2】数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问,这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

  【3】网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择,Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。

  【4】传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的), 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,常常把这一层数据叫做段。

  【5】会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路,主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。

  【6】表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。

  【7】应用层: 是最靠近用户的OSI层,这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

各层中涉及的协议的简单解释:
应用层
  ·DHCP(动态主机分配协议)
  · DNS (域名解析)
  · FTP(File Transfer Protocol)文件传输协议
  · Gopher (英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议)
  · HTTP (Hypertext Transfer Protocol)超文本传输协议
  · IMAP4 (Internet Message Access Protocol 4) 即 Internet信息访问协议的第4版本
  · IRC (Internet Relay Chat )网络聊天协议
  · NNTP (Network News Transport Protocol)RFC-977)网络新闻传输协议
  · XMPP 可扩展消息处理现场协议
  · POP3 (Post Office Protocol 3)即邮局协议的第3个版本
  · SIP 信令控制协议
  · SMTP (Simple Mail Transfer Protocol)即简单邮件传输协议
  · SNMP (Simple Network Management Protocol,简单网络管理协议)
  · SSH (Secure Shell)安全外壳协议
  · TELNET 远程登录协议
  · RPC (Remote Procedure Call Protocol)(RFC-1831)远程过程调用协议
  · RTCP (RTP Control Protocol)RTP 控制协议
  · RTSP (Real Time Streaming Protocol)实时流传输协议
  · TLS (Transport Layer Security Protocol)安全传输层协议
  · SDP( Session Description Protocol)会话描述协议
  · SOAP (Simple Object Access Protocol)简单对象访问协议
  · GTP 通用数据传输平台
  · STUN (Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议
  · NTP (Network Time Protocol)网络校时协议
传输层
  ·TCP(Transmission Control Protocol)传输控制协议
  · UDP (User Datagram Protocol)用户数据报协议
  · DCCP (Datagram Congestion Control Protocol)数据报拥塞控制协议
  · SCTP(STREAM CONTROL TRANSMISSION PROTOCOL)流控制传输协议
  · RTP(Real-time Transport Protocol或简写RTP)实时传送协议
  · RSVP (Resource ReSer Vation Protocol)资源预留协议
  · PPTP ( Point to Point Tunneling Protocol)点对点隧道协议
网络层
IP(IPv4 · IPv6) Internet Protocol(网络之间互连的协议)
ARP : Address Resolution Protocol即地址解析协议,实现通过IP地址得知其物理地址。
RARP :Reverse Address Resolution Protocol 反向地址转换协议允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。
ICMP :(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
ICMPv6:
IGMP :Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP 主机向任一个直接相邻的路由器报告他们的组成员情况。
RIP : 路由信息协议(RIP)是一种在网关与主机之间交换路由选择信息的标准。
OSPF : (Open Shortest Path First开放式最短路径优先).
BGP :(Border Gateway Protocol )边界网关协议,用来连接Internet上独立系统的路由选择协议
IS-IS:(Intermediate System to Intermediate System Routing Protocol)中间系统到中间系统的路由选择协议.
IPsec:“Internet 协议安全性”是一种开放标准的框架结构,通过使用加密的安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通讯。
数据链路层
  802.11 · 802.16 · Wi-Fi · WiMAX · ATM · DTM · 令牌环 · 以太网 · FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN
物理层
  以太网物理层 · 调制解调器 · PLC · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线

各层功能及协议的简单解释

各层功能及协议的简单解释

五层通信流程图

二.TCP,UDP区别

1.TCP三次握手 四次挥手

2.TCP/UDP下的socket

TCP服务端(多人聊天版)

 1 import socket
 2
 3 server = socket.socket()
 4
 5 server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 重用这个端口
 6
 7 ip_port = (‘127.0.0.1‘,8001)
 8
 9 server.bind(ip_port)
10
11 server.listen(3)
12
13 while 1:
14     conn, addr = server.accept()
15
16     while 1:
17         from_client_msg = conn.recv(1024)
18         print(‘来自宝宝的消息:‘,from_client_msg.decode(‘utf-8‘))
19
20         if from_client_msg.decode(‘utf-8‘) == ‘byebye‘:
21             break
22
23         to_client_msg = input(‘高望>>>‘)
24         conn.send(to_client_msg.encode(‘utf-8‘))
25
26     conn.close()

TCP客户端(多人聊天版)

 1 import socket
 2
 3 client = socket.socket()  # 创建对象
 4
 5 ip_port = ‘127.0.0.1‘, 8001  # 设置IP地址
 6
 7 client.connect(ip_port)  # 绑定IP地址
 8
 9 while 1:  # 循环
10     to_server_msg = input(‘宝宝说:‘)  # 输入发给服务端要说的话
11
12     client.send(to_server_msg.encode(‘utf-8‘))  # 发送上面输入的话到服务端
13
14     if to_server_msg == ‘byebye‘:  # 判断输入的话如果是byebye 则跳出循环
15
16         break
17
18     from_server_msg = client.recv(1024)  # 获取服务端发过来的内容
19
20     print(‘来自高望的消息:‘,from_server_msg.decode(‘utf-8‘))  # 打印获取到的服务端信息
21
22
23 client.close()

UDP服务端(多人聊天版)

import socket

udp_server = socket.socket(type = socket.SOCK_DGRAM)  # datagram

ip_port = (‘127.0.0.1‘, 8002)

udp_server.bind(ip_port)

while 1:
    from_client_msg, client_addr = udp_server.recvfrom(1024)

    print(from_client_msg.decode(‘utf-8‘),client_addr)

    to_client_msg = input(‘服务端说;‘)

    udp_server.sendto(to_client_msg.encode(‘utf-8‘), client_addr)

UDP客户端(多人聊天版)

 1 import socket
 2
 3 udp_client = socket.socket(type = socket.SOCK_DGRAM)
 4
 5 ip_port = (‘127.0.0.1‘, 8002)
 6
 7 while 1:
 8     to_server_msg = input(‘客户端说:‘)
 9
10     udp_client.sendto(to_server_msg.encode(‘utf-8‘), ip_port)
11
12     from_server_msg, server_addr = udp_client.recvfrom(1024)
13
14     print(from_server_msg.decode(‘utf-8‘), server_addr)

原文地址:https://www.cnblogs.com/beargod/p/10217138.html

时间: 2024-10-12 22:47:03

python 网络通信协议/TCP,UDP区别的相关文章

第二十七天- 网络通信协议 TCP UDP 缓冲区

1.网络通信协议 osi七层模型:按照分工不同把互联网协议从逻辑上划分了层级 socket层 2.理解socket: Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议.我们可理解成模块,直接拿来用. 套接字socket历史: 套接字起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本

TCP连接的三次握手,TCP/UDP区别联系,socket连接和http连接的区别

TCP连接的三次握手 1.第一次握手:客户端发送SYN + J包(syn = j)到服务器,并进入SYN_SEND状态,等待服务器确认: 2.第二次握手:服务器收到syn包,必须确认客户的SYN(A出口= j+1),同时自己也发送一个SYN+K包(syn =k),即SYN +ACK包,向服务器发送确认包ACK(ack = k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手, TCP/UDP区别联系 1.TCP的全称是传输控制协议,这种协议可以提供面向连接的,可靠地

【Python】 Python网络编程概论 + UDP初步

网络编程概论 Socket是计算机之间进行网络通信的一套程序接口.目前,Socket编程已经成为了网络编程的标准,计算机之间通信都必须遵守Socket接口的相关要求. Socket对象是网络通信的基础,字相当于一个管道连接了发送端和接收端,并在两者之间互相传递数据.Python对Socket进行了二次封装,简化了程序开发步骤,大大提高了开发的效率. 在网络通信模型中,需要两个重要的信息才能完成数据的传输:IP地址和端口号. 在接收端,主机负责接收所有发给自己的数据包,并将这些数据放到操作系统的数

python网络编程——TCP

<pre name="code" class="python"> 一.网络通信模式 对于网络通信,现在遵循的是TCP/IP协议组. 而现在设计的通信模式中,主要使用的是客户端/服务器编程,所谓的客户端就是我们用户所用的软件,而服务端则是程序开发人员根据客户端的需要设计的服务模式,为了是满足客户端的要求,实现和客户端进行正常通信. 二.套接字:通信的端点 对于tcp/Ip协议来说,它是一个多层协议族,分别是物理层,数据链路层,网络层,传输层,应用层.对于网

python学习之TCP/UDP

TCP/UDP都是网络编程(socket)的两种基于C/S结构的程序. UDP:非可靠连接速度快,服务器:创建socket 绑定ip和端口后直接从指定的IP和端口接收数据不用侦听:客户端:创建socket ,直接接收数据,不需要建立连接. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定端口: s.bind(('127.0.0.1', 9999)) s.recvfrom(1024) #接收数据. TCP:可靠连接,客户端此外还需要

TCP UDP区别

TCP和UDP区别 TCP UDP 是否连接 面向连接 面向非连接 传输可靠性 可靠的 不可靠的 应用场合 传输大量的数据 少量数据 速度 慢 快 1. TCP协议可靠,UDP协议不可靠 2. TCP协议面向连接,UDP协议采用无连接:TCP协议的发送方要确认接收方是否收到数据段(3次握手协议),UDP不需要 3. 当强调数据传输的完整性.可控制性和可靠性时,TCP协议是当然的选择.当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择,比如:包总量较少的通信(DNS/SN

python 学习5 网络编程-TCP/UDP

摘抄自:廖雪峰的官方网站:http://www.liaoxuefeng.com/ TCP客户端和服务器端代码: #coding=utf-8 #客户端程序TCP 连接 import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1',9999)) print(s.recv(1024)) for data in ['Michael','Tracy','Sarah']: s.send(data

TCP/UDP区别与联系

主要从应用层简要对TCP于UDP的区别进行说明 UDP协议: UDP与TCP的主要区别在于UDP不一定提供可靠的数据传输.事实上,该协议不能保证数据准确无误的到达目的地.UDP在许多方面都非常有效.当某个程序的目标是尽快传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用UDP.许多程序使用单独的TCP连接和单独的UDP连接.重要的状态信息随可靠的TCP连接发送,而主数据流通过UDP发送. TCP协议: TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连

python网络编程之UDP实现

一.简介: python udp是无连接,没有TCP的三次握手,错误重传机制,发的只管发,收的只管收,效率比TCP高,运用于对数据帧不高的地方,如视频,音频的传输 二.实现过程: 服务器端过程如下: 1.建立UDP的SOCKET 2.绑定一个接口,让客户端连接 3.接受数据 客户端过程如下: 1.创建一个socket 2.收发数据报 三.代码实现 1.服务器端: import socket from time import ctime def udpServer(): buffer=2048 a