网络编程 TCP UDP IP

0 概述

1 TCP

TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP通信需要经过创建连接、数据传送、终止连接三个步骤。

特点:

(1)面向连接,可以间接验证ip地址的有效性

(2)应答机制: 对方收到消息,底层会回复

(3)超时重传:对方收到数据没有回复那么会再次给对方发送数据,如果对方一直不回复那么会认为对方掉线

(4)错误校验: 比如接收的数据的序号和发送时候的数据序号不一致,那么tcp会对数据包进行自动排序, 如果收到重复的数据包会删除

(5)流量控制: 对方发送大量数据如果接收方网卡缓存区达到一定上限,那么就不让对方发送数据,等接收方把数据处理完以后再发送,保证电脑接收数据不会卡死

2 UDP

用户数据报协议,属于传输层的协议,无连接,不保证传输的可靠性。对于来自应用层的数据包,直接加上UDP报头然后传送给IP。UDP头部中有一个校验和字段,可用于差错的检测,但是UDP是不提供差错纠正的。此外IPV4不强制这个校验和字段必须使用,但IPV6是强制要求使用的。

特点:

(1)开销更小,TCP为了保证其可靠性,首部包含20字节,以及40字节的可选项,UDP首部只有8字节

(2)速度更快,UDP发送数据之前没有TCP的连接建立过程;而TCP则提供了过多的保护,牺牲了及时性,比如:控制微包(Nagle算法)、延时ACK、流量控制、超时重传等,这些设计严重影响了Tcp的速度和及时性

TCP和UDP的区别:

(1)TCP面向连接, UDP不面向连接
(2)TCP可靠的传输协议,UDP 不可靠
(3)TCP 应答机制, UDP没有
(4)TCP 超时重传,UDP没有
(5)TCP 流量控制, UDP没有
(6)TCP 错误校验, UDP没有
(7)UDP适合做广播,TCP不适合
(8)UDP传输速度比TCP传输速度要快, UDP占用的资源要比TCP的占用资源要少
(9)UDP 每次发送的数据包不能太大,上限是64k, TCP理论上没有限制 —扩展
(10)TCP适合文件的上传和下载,绝大多数应用都是使用TCP的
(11)UDP 适合音视频,比如qq,微信的传输,以及飞秋上线广播等等

3 IP

IP协议:IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情。

IP地址:在数据链路层中我们一般通过MAC地址来识别不同的节点,而在IP层我们也要有一个类似的地址标识,这就是IP地址。32位IP地址分为网络位和地址位,这样做可以减少路由器中路由表记录的数目,有了网络地址,就可以限定拥有相同网络地址的终端都在同一个范围内,那么路由表只需要维护一条这个网络地址的方向,就可以找到相应的这些终端了。

1 查看while源代码

include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#incl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux网络编程中的TCPUDP是两种常见的传输协议。 TCP(Transmission Control Protocol)是一种基于连接的可靠传输协议。它提供了面向连接、可靠的数据传输服务。在TCP通信中,数据被分割成小的数据块,通过TCP连接按序传输,并且保证数据的可靠性,即使在网络拥塞或数据丢失的情况下也能重新传输丢失的数据。TCP适用于对可靠性要求较高的应用程序,如文件传输、电子邮件和网页浏览。 UDP(User Datagram Protocol)是一种无连接的不可靠传输协议。它提供了一种无序、不可靠的数据传输服务。在UDP通信中,数据以数据包(也称为数据报)的形式发送,不进行连接建立和断开,也不保证数据的可靠性和按序传输。UDP适用于对实时性要求较高、对数据可靠性要求较低的应用程序,如音视频流媒体、在线游戏等。 在Linux中进行TCPUDP网络编程可以使用Socket API。该API提供了一组函数和数据结构,用于创建套接字(socket)、绑定(bind)套接字到特定的IP地址和端口、监听(listen)连接请求、接受(accept)连接、建立连接(connect)、发送(send)和接收(receive)数据等操作。 你可以使用C语言或其他支持Socket API的编程语言来进行Linux网络编程,通过调用Socket API提供的函数来实现TCPUDP通信。在编程过程中,你需要了解TCPUDP的特点、使用套接字创建相应的连接类型、发送和接收数据的方式等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值