首页 > 其他分享 >计算机网络——应用层(3)

计算机网络——应用层(3)

时间:2024-01-17 10:34:38浏览次数:37  
标签:UDP socket 编程 TCP 计算机网络 接字 应用层 函数

(计算机网络——应用层(3))

小程一言

我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。 面向群体:在学计网的在校大学生,工作后想要提升的各位伙伴,

专栏链接: link

在这里插入图片描述

点对点(P2P)

点对点网络,是一种计算机网络架构,其中每个节点(或者称为对等体)都可以充当客户端和服务器。在P2P网络中,所有节点都可以直接通信,而不需要中心化的服务器来协调通信。

P2P网络一般用途

  1. 在文件共享方面,P2P网络允许用户共享他们的文件,并允许其他用户从多个源头下载文件,从而提高下载速度并减轻服务器负载。
  2. 在分布式计算方面,P2P网络可以将计算任务分发给多个节点,从而加快计算速度和提高系统的可靠性。 在这里插入图片描述

优点

去中心化、弹性和可伸缩性。由于没有单点故障,P2P网络通常更加稳定和可靠。 很容易地扩展,因为每个新加入的节点都可以提供额外的资源和带宽。

缺点

  1. 由于缺乏中心化的管理,P2P网络可能更容易受到安全漏洞和恶意行为的影响。
  2. P2P网络也可能导致网络拥塞和带宽消耗问题,特别是在大规模文件共享和分布式计算时 在这里插入图片描述

总结

P2P网络是一种灵活、高效的网络架构,适用于许多不同的应用场景。在适当的管理和安全措施下,P2P网络可以为用户提供更好的性能和体验。

套接字编程

指使用套接字(socket)接口来进行网络编程的过程。套接字是一种==通信机制==,它允许不同计算机之间的进程进行通信。在实际应用中,套接字编程通常用于创建==客户端-服务器模型==的网络应用程序。

基本步骤

  1. 创建套接字:在编程中,首先需要创建一个套接字,以便进行网络通信。在C语言中,可以使用socket()函数来创建套接字。
  2. 绑定套接字:接下来,需要将套接字绑定到一个特定的地址和端口上,以便其他进程可以通过该地址和端口与该套接字通信。
  3. 监听连接:如果是服务器端程序,需要调用listen()函数来监听来自客户端的连接请求。
  4. 接受连接:一旦有客户端请求连接,服务器端程序需要调用accept()函数来接受连接,并创建一个新的套接字来与客户端进行通信。
  5. 发送和接收数据:一旦建立了连接,客户端和服务器端可以使用send()和recv()函数来发送和接收数据。
  6. 关闭套接字:最后,在通信结束后,需要调用close()函数来关闭套接字。 在这里插入图片描述## 分类

UDP套接字

UDP是一种无连接的、不可靠的传输协议,它通过数据包的形式进行通信。UDP套接字编程是指使用UDP协议进行网络编程的过程,它通常用于那些对数据传输的实时性要求较高,而对数据可靠性要求较低的应用场景,比如音频和视频流的传输等。

在这里插入图片描述#### 基本步骤

  1. 创建套接字:使用socket()函数创建一个UDP套接字。在Python中,可以使用socket模块的socket()函数来创建UDP套接字:
import socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  1. 绑定套接字:将套接字绑定到一个本地地址和端口上,以便接收来自其他主机的数据包。在Python中,可以使用bind()函数来绑定套接字:
udp_socket.bind(('127.0.0.1', 8888))
  1. 发送数据:使用sendto()函数向指定的目标地址发送数据包。在Python中,可以使用sendto()函数来发送数据包:
udp_socket.sendto(b"Hello, UDP!", ('127.0.0.1', 9999))
  1. 接收数据:使用recvfrom()函数从套接字接收数据包,并获取发送方的地址信息。在Python中,可以使用recvfrom()函数来接收数据包:
data, addr = udp_socket.recvfrom(1024)
print("Received from", addr, ":", data.decode())
  1. 关闭套接字:在通信结束后,使用close()函数关闭套接字:
udp_socket.close()

TCP套接字

TCP是一种面向连接的、可靠的传输协议,它通过建立连接、数据传输和断开连接的方式来实现可靠的数据传输。TCP套接字编程是指使用TCP协议进行网络编程的过程,它通常用于那些对数据传输的可靠性和完整性要求较高的应用场景,比如Web服务器、邮件服务器等。

基本步骤

在这里插入图片描述

  1. 创建套接字:使用socket()函数创建一个TCP套接字。在Python中,可以使用socket模块的socket()函数来创建TCP套接字:
import socket
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  1. 绑定套接字:将套接字绑定到一个本地地址和端口上,以便接收来自其他主机的连接。在Python中,可以使用bind()函数来绑定套接字:
tcp_socket.bind(('127.0.0.1', 8888))
  1. 监听连接:如果是服务器端程序,需要调用listen()函数来监听来自客户端的连接请求:
tcp_socket.listen(5)
  1. 接受连接:一旦有客户端请求连接,服务器端程序需要调用accept()函数来接受连接,并创建一个新的套接字来与客户端进行通信:
client_socket, addr = tcp_socket.accept()
  1. 发送和接收数据:一旦建立了连接,客户端和服务器端可以使用send()和recv()函数来发送和接收数据:
client_socket.send(b"Hello, TCP!")
data = client_socket.recv(1024)
print("Received:", data.decode())
  1. 关闭套接字:最后,在通信结束后,需要调用close()函数来关闭套接字:
client_socket.close()
tcp_socket.close()

在这里插入图片描述

二者对比

  1. UDP套接字编程与TCP套接字编程相比,更加简单和高效,因为UDP协议不需要维护连接状态,也不需要进行握手和挥手等复杂的过程。但是,由于UDP协议是不可靠的,数据包可能会丢失或乱序,因此在使用UDP套接字编程时,需要考虑数据的可靠性和完整性。
  2. TCP套接字编程与UDP套接字编程相比,更加稳定和可靠,因为TCP协议提供了连接的管理和数据的可靠传输。但是,TCP协议的建立连接和断开连接的过程会增加一定的开销,因此在对实时性要求较高的应用场景下,可能不太适合使用TCP套接字编程。

标签:UDP,socket,编程,TCP,计算机网络,接字,应用层,函数
From: https://blog.51cto.com/u_16193391/9287099

相关文章

  • linux 内核和应用层之间的通信方式
    系统调用应用与内核通信的方式中,最常用的就是系统调用。如常见的open、write、read、ioctl等系统调用。当系统调用时,触发一个软中断,处理器进入内核模式。参数传递到内核空间,完成通信过程。内核完成服务之后,将数据返回给应用,并设置处理器为用户模式。copy_to_user()/copy_from_......
  • 计算机网络——应用层(1)
    (计算机网络——应用层(1))小程一言我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。面向群体:在学......
  • 计算机网络(2)
    (计算机网络(2))小程一言我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。面向群体:在学计网的在校......
  • 计算机网络(1)
    (计算机网络(1))小程一言我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。面向群体:在学计网的在校......
  • 计算机网络分层结构--OSI模型、TCP/IP 模型、五层模型
    计算机网络分层结构OSI参考模型与TCP/IP参考模型五层参考模型......
  • 【计算机网络】6.链路层和局域网
    1导论节点(nodes):主机和路由器(网桥和交换机也是)链路(links):沿着通信路径,连接相邻节点通信信道(有线链路、无线链路、局域网共享性链路)帧(frame):第二层协议数据单元,封装数据报IP数据报分组在不同的链路上以不同的链路协议传送,路由器根据要打出的端口确定封装的协议,例如从以太网接收......
  • 【计算机网络】3.传输层
    1概述和传输层服务传输层服务:进程之间的逻辑通信依赖网络层的服务(延时、带宽)对网络层的服务进行加强(数据丢失、顺序混乱、加密)TCP:多路复用解复用、建立连接、拥塞控制、流量控制UDP:多路复用解复用TCP和UDP都不提供延时和带宽保证网络层服务:主机之间的逻辑通信2多路......
  • 【计算机网络子网划分指南】
    (文章目录)什么是子网划分?子网划分是将一个大型网络划分为若干个更小的子网络的过程。通过将网络划分为子网,管理员可以更好地控制流量、隔离故障、提高网络效率,并增强网络的安全性。子网划分的好处1.提高网络性能子网划分可以减少广播域的大小,从而减少网络中的广播流量。有助......
  • 计算机网络期末-远程登录到交换机
    第一步:修改交换机的主机名称。<Huawei>system-view[Huawei]uninen//关闭信息提示[Huawei]sysnamewjh第二步:给交换机配置管理IP地址。[wjh]intvlanif1//进入vlan1虚拟接口视图[wjh-Vlanif1]ipaddress192.168.1.25324第三步:在AAA模式下创建普通用户和管理员用户,并......
  • 《计算机科学导论》课后习题 第6章 计算机网络和因特网
    我对这一章节比较陌生,如果回答中有错误,或者您有什么不同观点,请不吝指教。一、复习题Q6-1本章讨论的需要遵循达成双向通信的协议分层的首要原则是什么?A:一、保证每一个协议层都可以进行两个对立且方向相反的工作。二、两个站点中每一层的两个对象必须完全相同。Q6-2在TCP/IP......