udp

网络套接字编程介绍

做~自己de王妃 提交于 2020-01-27 07:13:24
以下是阿鲤对套接字编程的一些理解性总结,希望对大家有所帮助;若存在错误,请慷慨指出; 1:套接字编程预备知识 2:socket api(套接字编程接口)介绍 3:udp协议的客户端/服务端的介绍实现 4:tcp协议的客户端/服务端的介绍实现 一: 套接字编程预备知识 1:ip地址 IP协议规定网络上所有的设备都必须有一个独一无二的IP地址,就好比是邮件上都必须注明收件人地址,邮递员才能将邮件送到。同理,每个IP信息包都必须包含有目的设备的IP地址,信息包才可以正确地送到目的地。同一设备不可以拥有多个IP地址,所有使用IP的网络设备至少有一个唯一的IP地址。换言之,可以分配多个IP地址给同一个网络设备,但是同一个IP地址却不能重复分配给两个或以上的网络设备。 目前使用最广泛的IP地址规则为IPV4,其使用32位二进制来规定,而截至2019年11月26日,全球所有43亿个IPv4地址已分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商;所以现在大部分上网均采用动态地址分配,即便如此依旧不够使用;虽然出现了IPV6,但是IPV6还在部署初期; 2:端口号 端口号是一个2字节16位的整数;端口号用来标识一个进程,告诉操作系统,当前这个数据要交给哪一个进程来处理;所以ip地址+端口号就可以标识出某一台主机上的某一个进程(程序); 注意

网络通信: TCP与UDP协议

落爺英雄遲暮 提交于 2020-01-26 15:00:21
主要参考: c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码 ; UDP协议的详细解析 ; TCP 详解 文章目录 网络编程和套接字 消息接收过程 消息发送过程 UDP协议 简介 代码实现 TCP协议 简介 代码实现 网络编程和套接字 网络编程 是编写程序使两台 联网的 计算机相互交换数据, 主要依靠操作系统提供的“套接字”部件. 套接字 是用于网络数据传输的软件设备, 如果将网络通信类比为电话机通信系统,那套接字就是电话机, 渠道就是互联网, 和电话拨打或接听一样,套接字也可以发送或接收. 消息接收过程 先有一台电话机: 创建套接字, 即 实例化 int socket(int domain, int type, int protocol); 电话机要有电话号码的问题: 给套接字 绑定 地址信息(IP地址和端口号) int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen); 设置电话机为可接听状态: 设置套接字为 可接听 状态 int listen(int sockfd, int backlog); 接听电话: 套接字 接受 消息 int accept(int sockfd, struct sockaddr *addr, socklen_t

说说TCP,UDP和socket,Http之间联系和区别

て烟熏妆下的殇ゞ 提交于 2020-01-26 03:09:08
整理的这些区别和联系都是非常重要的。 TCP协议 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。 在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。 TCP的优点 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 由于TCP存在确认机制和三次握手机制,这些是导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。 TCP应用场景 当对网络通讯质量有要求的时候,比如

网络架构系列1--TCP/IP详解

不羁的心 提交于 2020-01-26 02:37:40
不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨—[https://blog.csdn.net/cjm2484836553/article/details/103930596] 《网络架构系列1--TCP/IP详解》 1.计算机网络分层▲(面试点) 1.1 OSI七层网络模型 和 TCP/IP参考模型 2.IP地址 和 端口号 2.1 IP地址 2.2 端口号➹(暗涉一道面试题) 3. TCP和UDP 3.1 TCP的定义和特点 3.2 UDP的定义和特点 4. TCP报文结构 5. TCP中的三次握手▲▲▲(面试点) 5.1 描述一下TCP中三次握手的流程 5.2 为什么TCP建立连接需要三次握手? 5.3 TCP三次握手有什么漏洞吗(知道即可) 6.TCP中的四次挥手(面试点▲) 6.1 描述一下TCP中四次挥手的流程 6.2 为什么TCP释放连接需要四次挥手? 6.3 为什么建立连接是三次握手,而关闭连接却是四次挥手呢,为什么2、3两次不能合并呢? 7.TCP协议中的窗口机制(拓展,了解一下即可) 网络架构,可以算得上是面试的宠儿了,我也废话不多说,直接上重点。 1.计算机网络分层▲(面试点) 1.1 OSI七层网络模型 和 TCP/IP参考模型 重点1 :OSI七层网络模型 和 TCP/IP参考模型 ,它可是面试的敲门砖,所以大概的内容要记住。 (PS

Python网络编程

只谈情不闲聊 提交于 2020-01-26 01:49:50
简介 使用套接字进行网络编程。 网络编程 使用 socket 模块的 socket() 函数,可以创建套接字。 socket 模块函数 要创建套接字,必须使用 socket.socket() 函数,语法如下: socket(socket_family, socket_type, protocol=0) 其中, socket_family 是 AF_UNIX 或 AF_INET , socket_type 是 SOCK_STREAM 或 SOCK_DGRAM 。 protocol 通常省略,默认为 0 。 导入模块 创建 TCP/IP 套接字 tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 创建 UDP/IP 套接字 udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 套接字对象方法 服务器套接字方法 名称 描述 s.bind() 将地址(主机号、端口号对)绑定到套接字上 s.listen() 设置并启动 TCP 监听器 s.accept() 被动接受 TCP 客户端连接,一直等待知道连接到达(阻塞) 客户端套接字方法 名称 描述 s.connect() 主动发起 TCP 服务器连接 s.connect_ex() connect() 的扩展版本

Linux tcpdump命令详解

折月煮酒 提交于 2020-01-25 23:47:39
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支 持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例 默认启动 tcpdump 普通情况下,直接启动 tcpdump 将监视第一个网络接口上所有流过的数据包。 监视指定网络接口的数据包 tcpdump -i eth1 如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。  监视指定主机的数据包 打印所有进入或离开sundown的数据包. tcpdump host sundown 也可以指定ip,例如 截获所有 210.27.48.1 的主机收到的和发出的所有的数据包 tcpdump host 210.27.48.1 打印helios 与 hot 或者与 ace 之间通信的数据包 tcpdump host helios and \( hot or ace \) 截获主机 210.27.48.1 和主机 210.27.48.2 或 210.27.48.3 的通信 tcpdump host 210.27.48.1 and \ (210.27

Java Scoket编程

时光毁灭记忆、已成空白 提交于 2020-01-25 10:23:13
Java Scoket编程 转自http://www.cnblogs.com/futao123/p/5068632.html 爱海滔滔 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。 目前较为流行的网络编程模型是客户机/服务器(C/S)结构。 即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客 户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。 二,两类传输协议: TCP 和 UDP   TCP 是 Tranfer Control Protocol 的 简 称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须 建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时

Handling multiple UDP sockets listening on the same endpoint

僤鯓⒐⒋嵵緔 提交于 2020-01-25 07:20:15
问题 I've been following (roughly) some example code here on writing a DTLS server that can handle multiple clients. In this example, which works quite well (I tried), the server listens on INADDR_ANY and port 0 . fd = socket(server_addr.ss.ss_family, SOCK_DGRAM, 0); setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const void*) &on, (socklen_t) sizeof(on)); bind(fd, (const struct sockaddr *) &server_addr, sizeof(struct sockaddr_in)) When a DGRAM is received, the server runs it through an OpenSSL method

ISO/OSI模型

不羁岁月 提交于 2020-01-25 00:53:24
ISO七层模型由下至上为1至7层,分别为: 应用层(Application layer) 表示层(Presentation layer) 会话层(Session layer) 传输层(Transport layer) 网络层(Network layer) 数据链路层(Data link layer) 物理层(Physical layer) 其中上三层称之为高层,定义应用程序之间的通信和人机界面。什么意思呢,就是上三层负责把电脑能看懂的东西转化为你能看懂的东西,或把你能看懂的东西转化为电脑能看懂的东西。 下四层称之为底层,定义的是数据如何端到端的传输(end-to-end),物理规范以及数据与光电信号间的转换。 应用层,很简单,就是应用程序。这一层负责确定通信对象,并确保由足够的资源用于通信,这些当然都是想要通信的应用程序干的事情。 表示层,负责数据的编码、转化,确保应用层的正常工作。这一层,是将我们看到的界面与二进制间互相转化的地方,就是我们的语言与机器语言间的转化。数据的压缩、解压,加密、解密都发生在这一层。这一层根据不同的应用目的将数据处理为不同的格式,表现出来就是我们看到的各种各样的文件扩展名。 会话层,负责建立、维护、控制会话,区分不同的会话,以及提供单工(Simplex)、半双工(Half duplex)、全双工(Full duplex)三种通信模式的服务

TCP和UDP的一些优缺点和区别

烈酒焚心 提交于 2020-01-24 18:23:49
技术博客: https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta ,更多精彩内容等你来。 TCP 的优点: 可靠,稳定。 TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP 的缺点: 慢,效率低,占用系统资源高,易被攻击。 TCP 在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的 CPU、内存等硬件资源。 而且,因为 TCP 有确认机制、三次握手机制,这些也导致 TCP 容易被人利用,实现 DOS、DDOS、CC 等攻击。 UDP 的优点: 快,比 TCP 稍安全。 UDP 没有 TCP 的握手、确认、窗口、重传、拥塞控制等机制,UDP 是一个无状态的传输协议,所以它在传递数据时非常快。没有 TCP 的这些机制,UDP 较 TCP 被攻击者利用的漏洞就要少一些。但 UDP 也是无法避免攻击的,比如:UDP Flood 攻击。 UDP 的缺点: 不可靠,不稳定。 因为 UDP 没有 TCP 那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。