LINUX网络编程:传输层

news/2024/9/18 23:29:56 标签: linux, 网络, 服务器

目录

1.端口号

1.1知名端口号

1.2注意

2.UDP协议

2.1UDP报头的格式

2.2UDP的特点

2.3UDP的缓冲区


1.端口号

端口号的作用标识一个网络中主机的一个进程。

网络之间通信无非就是,发送端和接受端进程之间的通信,所以通过ip地址找到目标主机之后,在使用端口号找到目标的进程

1.1知名端口号

有一些常用的服务器,他们的端口号是固定的,我们在写服务器绑定端口号的时候要避开这些固定的端口号(知名端口号)。

使用命令

cat /etc/services

查看知名端口号

 

未完全列举

1.2注意

一个进程可以绑定多个端口号,但是一个端口号不能绑定多个进程。

从定义出发来理解这个问题,端口号是用来标识进程的,可以用多个端口号标识一个进程,

但是一个端口号绑定了多个进程,那么主机收到数据之后应该交给哪个进程呢?

2.UDP协议

2.1UDP报头的格式

注意:udp的长度(报头 + 数据)只有16位这么大,换算过来就是64kb,如果说你的数据超过64kb,多出的部分会被丢弃

2.2UDP的特点

1.无连接:知道ip端口直接进行传输

在创建出套接字之后,不用建立连接,直接可以进行通信。

2.不可靠:没有确认机制,也没有重传机制,发送的数据丢了就丢了。

首先不可靠并不是一个缺点,虽然UDP不可靠,但是相比TCP会更快一些,因为不用建立连接,不用维护连接,用于一些对数据传输可靠性要求不高的应用场景。

3.面向数据报:不能灵活的控制读写

使用UDP发送50个字节的数据,每次发10个发5次,接受方就需要接受5次。

2.3UDP的缓冲区

1.无发送缓冲区:udp只想快一点吧数据发送出去,在调用sendto接口,会将数据直接交给内核。

2.接收缓冲区:udp是有接受缓冲区的,但是不能保证接受数据的顺序,如果缓冲区满了,再发过来的数据也会被丢弃。


http://www.niftyadmin.cn/n/5664699.html

相关文章

yolov5/8/9/10模型在车辆检测中的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9/10模型在车辆检测中的应用【代码数据集python环境GUI系统】 1.背景意义 随着城市化进程的加速和机动车数量的激增,交通拥堵、交通事故等问题日益严重。传统的交通管理手段已经难以满足日益增长的交通需求。基于计算机视觉的车辆检测技术通过实时捕捉道路…

从0开始学习 RocketMQ:分布式事务消息的实现

消息队列中的事务,主要是解决消息生产者和消息消费者数据一致性的问题。 应用场景 比如订单系统创建订单后,会发消息给购物车系统,将已下单的商品从购物车中删除。 由于购物车删除商品这一步骤并不是用户下单支付这个主流程中的核心步骤&a…

C++: 高效使用智能指针的8个建议

前言:智能指针是C11的新特性,它基于RAII实现,可以自动管理内存资源,避免内存泄漏的发生,但是智能指针也并不是万能的,如果不正确使用智能指针,也会导致内存泄漏的发生,因此&#xff…

UDP聊天室项目

代码思路 服务器 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h>…

实时(按帧)处理的低通滤波C语言实现

写在前面&#xff1a; 低通滤波采用一般的FIR滤波器&#xff0c;因为本次任务&#xff0c;允许的延迟较多&#xff0c;或者说前面损失的信号可以较多&#xff0c;因此&#xff0c;涉及一个很高阶的FIR滤波器&#xff0c;信号起始段的信号点可以不处理&#xff0c;以及&#xf…

p14 使用阿里云服务器的docker部署NGINX

拉取NGINX的镜像 这里因为之前已经配置过从阿里云的镜像仓库里面拿镜像所以这里直接就执行docker pull nginx拉取NGINX镜像就OK了 运行NGINX镜像 这里执行docker run -d --name nginx01 -p 3344:80 nginx这里3344是服务器访问的端口80是容器内部的端口&#xff0c;可以看到…

C语言操作数据库

目录 一、引言 二、环境准备 三、C语言操作数据库步骤 1.数据库连接 2.数据库查询 3.数据库插入、更新和删除 四、总结 本文将详细介绍如何在C语言中操作数据库&#xff0c;包括数据库的连接、查询、插入、更新和删除等操作。通过本文的学习&#xff0c;读者可以掌握C语言操…

ruby和python哪个好学

Ruby和python都挺好学的。建议学习Python&#xff0c;语法的话&#xff0c;Python相对更简洁。而且Python应用场合更广泛&#xff0c;运维、网站开发、数据处理、科学研究都可以。 Ruby和Python十分相似&#xff0c;有很多共同点&#xff0c;但也有一些不同之外&#xff0c;以…