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