TCP/IP 协议(传输层)

传输层

五元组:协议号+源IP+源port(端口号)+目的IP+目的port

协议:网络数据传输时,经过的网络节点约定的规则,最终体现为数据格式
IP:在网络层 IP 协议中包含 ip地址这个字段,体现为起点和终点,用于绑定主机。
port:主机中的进程

数据传输

数据传输不是只有起点和终点,传输中途还要经过其他设备
在这里插入图片描述
传输的具体线路是由路由算法来计算出的最短路径方向

端口号划分

0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的.

1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的.

知名端口号

有些服务器是非常常用的, 为了使用方便, 人们约定一些常用的服务器, 都是用以下这些固定的端口号:

ssh服务器, 使用22端口
ftp服务器, 使用21端口
telnet服务器, 使用23端口
http服务器, 使用80端口
https服务器, 使用443

一个进程可以 bind 多个端口号
一个端口号不可以被多个进程 bind

UDP

在这里插入图片描述
校验和:类似文件的 md5,sha1值作为校验码

16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度;
如果校验和出错, 就会直接丢弃;

UDP 的特点

  1. 无连接,不可靠(要保持连接,意味双方保持一个连接状态)
  2. 面向数据报(发送和接收,都只能一次完成)
  3. 有接收缓冲区,没有发送缓冲区(发送方不关心对方是否接收到,接收方可以接收多个 udp数据)
  4. 发送数据大小受限(最多 64k)

面向数据报

应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并;

用UDP传输100个字节的数据:
如果发送端调用一次sendto, 发送100个字节, 那么接收端也必须调用对应的一次recvfrom, 接收100个字节; 而不能循环调用10次recvfrom, 每次接收10个字节;

UDP的缓冲区

  • UDP没有真正意义上的 发送缓冲区. 调用sendto会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作;
  • UDP具有接收缓冲区. 但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致; 如果缓冲区满了, 再到达的UDP数据就会被丢弃;

关于UDP的问题

  1. 怎样用 UDP 传输超过 64k 的数据?
  2. 怎样用 UDP 实现可靠传输?

因为传输层自身的原因,要想解决这些问题,只能在应用层解决,应用程序中(自己的代码)实现类似 TCP 的机制,可以实现传输可靠,传输大小不受限制。

基于UDP的应用层协议

  • NFS: 网络文件系统
  • TFTP: 简单文件传输协议
  • DHCP: 动态主机配置协
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值