ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TCP/IP五层(四层)模型——传输层(UDP协议、TCP协议)

2021-04-05 20:31:10  阅读:154  来源: 互联网

标签:协议 UDP 绑定 端口 TCP 进程 传输层 端口号


UDP ——用户数据报协议
特点:无连接、不可靠(无确认重传机制)、面向数据报(读写不灵活、报文不拆分不合并,应用层手动分包)
缓冲区:无发送缓冲区(数据直接交给内核)、有接收缓冲区(不保证顺序、满则丢弃)
基本协议:NFS 网络文件系统、TFTP 简单文件传输协议、DHCP 动态主机配置协议
BOOTP 启动协议(用于无盘设备启动)、DNS 域名解析协议

TCP —— 传输控制协议
协议段格式的6位标志位:URG、ACK、PSH、RST、SYN、FIN
机制:
确认应答机制
超时重传机制(数据包丢失(特定时间后重发)、ACK丢失(重复发来的数据报去重)、时间设置500ms)
连接管理机制(三次握手、四次挥手、TIME-WAIT 时间 = 2MSL)
滑动窗口机制(数据包丢失(3次同样ACK则重发,即高速重发机制)、ACK丢失(后续ACK推断确认))
流量控制机制("窗口大小"字段、窗口探测数据段)
拥塞控制机制(慢开始 + 拥塞避免、快重传 + 快恢复)
延迟应答、捎带应答
面向字节流
粘包问题
相关协议:HTTP HTTPS SSH Telnet FTP SMTP
在这里插入图片描述
端口号是一个2字节16为的整数
端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理
IP地址 + 端口号能够标识网络上的某一台主机的某一个进程(即套接字)
一个端口号只能被一个进程占用,而一个进程可以占用多个端口号
0——1023 知名端口号 HTTP,FTP,SSH等这些广为使用的应用层协议,他们的端口号是固定的
1024——49151 注册端口号 这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义
49152——65535 私有端口号 理论上,不应为服务分配这些端口
#常见知名端口号
21 FTP服务器
2000 FTP客户端
22 SSH服务器
23 TELNET
25 SMTP服务器
80 HTTP服务器
2001 FTTP客户端
443 HTTPS
一个进程可以绑定多个端口号吗??一个端口号可以被多个线程绑定吗??
一个进程可以绑定多个端口,一个端口是不能被多个进程绑定的,
因为端口号+IP=套接字,IP表示目标电脑的地址,端口表示目标电脑操作系统上的进程。所以套接字可以唯一标识一个进程,如果一个端口被多个程序绑定,那么就不知道数据该发送给谁。所以,一个端口是不能被多个进程绑定的。但是,一个进程可以绑定多个端口,不同的端口连接不同的服务器程序,已提供不同的服务。
在这里插入图片描述
UDP报文长度位8字节
16位源端口号决定有效载荷如何交付
16位UDP长度表示整个数据报(UDP部首+UDP数据)的最大长度
如果校验和出错,那么整个报文直接丢弃
UDP协议首部中有一个16位的最大长度. 所以一个UDP能传输的数据最大长度是2^16 = 64K(包含UDP首部),但是64K很小,如果我们需要传输的数据超过64K, 就需要在应用层手动的分包, 多次发送, 并在接收端手动拼装

标签:协议,UDP,绑定,端口,TCP,进程,传输层,端口号
来源: https://blog.csdn.net/weixin_56670610/article/details/115447177

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有