目录
一、TCP拥塞控制
几种拥塞控制的方法:
(1)慢启动
(2)快速恢复
(3)快速重传
二、三次握手、四次挥手抓包
三、UDP 的编程流程
概念
部分代码
特点:
一、TCP拥塞控制
在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的 资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分, 网络的性能就要变坏。这种情况就叫做拥塞。 所谓拥塞控制就是防止过多的数据注 入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的 过程,涉及到所有主机,所有路由器,以及与降低网络传输性能有关的所有因素。
几种拥塞控制的方法:
慢开始 拥塞避免 快速重传 快速恢复
(1)慢启动
(2)快速恢复
(3)快速重传
二、三次握手、四次挥手抓包
sudo tcpdump -i ens33 -nt '(src 192.168.31.143 and dst 192.168.31.213) or (src192.168.31.213 and dst 192.168.31.143 ) '
三、UDP 的编程流程
概念
无链接的,不可靠的,数据报服务
socket()用来创建套接字,使用 udp 协议时,选择数据报服务 SOCK_DGRAM。 sendto()用来发送数据,由于 UDP 是无连接的,每次发送数据都需要指定对端的地 址(IP 和端口)。 recvfrom()接收数据,每次都需要传给该方法一个地址结构来存 放发送端的地址。recvfrom()可以接收所有客户端发送给当前应用程序的数据,并 不是只能接收某一个客户端的数据。
部分代码
//UDP 数据读写:
ssize_t recvfrom(int sockfd, void *buff, size_t len, int flags,
struct sockaddr* src_addr, socklen_t *addrlen);
ssize_t sendto(int sockfd, void *buff, size_t len, int flags,
struct sockaddr* dest_addr, socklen_t addrlen);
//recvfrom()读取 sockfd 上的数据, buff 和 len 参数分别指定读缓冲区的位置和大小 //src_addr 记录发送端的 socket 地址
//addrlen 指定该地址的长度
//sendto()往 socket 上写入数据, buff 和 len 参数分别指定写缓冲区的位置和 数据长度 //dest_addr 指定接收数据端的 socket 地址 //addrlen 指定该地址的长度
特点:
无链接的,不可靠的,数据报服务;
1)多个客户端可以同时给服务器发送数据(因为没有建立链接,也就是说服务器没有只 和某一个客户端建立链接);
2)服务器关掉再打开是可以接收数据的; (因为没有建立链接)
3)数据报接收的特点:
UDP 数据报服务特点: 发送端应用程序每执行一次写操作, UDP 模块就将其封装 成一个 UDP 数据报发送。
接收端必须及时针对每一个 UDP 数据报执行读操作,否 则就会丢包。
并且,如果用户没有指定足够的应用程序缓冲区来读取 UDP 数据,则 UDP 数据将被截断。
也就是udp协议sendto和recvfrom的次数是相同的,不会出现沾包;