tcp/ip 协议簇笔记
本文最后更新于:19 天前
tcp/ip 协议簇它是基于tcp/ip协议,但是它并不仅限于tcp/ip 俩种协议,他是一个协议的泛指
它还包括很多其他的协议,同时也分为好多层,同层之间使用相同的协议,这样体现了分层的好处
每一层只是处理自己层的协议
网络体系结构
TCP和UDP是两种最为著名的运输层协议,二者都使用IP作为网络层协议
网络协议群
协议名称 | 具体协议 |
---|---|
应用协议 | HTTP,SMTP, FTP,TELNET |
传输协议 | TCP/UDP |
网络协议 | IP/ICMP/ARP |
路由控制协议 | RIP/OSPF/BGP |
数据包
- 包可以说是全能性术语;
- 帧用于表示数据链路层中包的单位;
- 数据包是 IP 和 UDP 等网络层以上的分层中包的单位;
- 段则表示 TCP 数据流中的信息;
- 消息是指应用协议中数据的单位;
每个层都会对所发送的数据附加一个首部,在这个首部包含了该层的必要信息,在下一层的角度看,从上一层
收到的包全部都被认为是本层的数据
传输层中的 TCP 和 UDP
TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP
TCP 提供一种面向连接的,可靠的字节流服务,流就是指不间断的数据结构
UDP 是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在 UDP 的情况下
虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。
TCP协议机制
在一个tcp连接中,仅仅有俩方进行彼此通信,应用数据被分割成tcp认为最适合发送的数据块
当tcp发出一个段后,启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段
当tcp收到发自tcp连接另一端的数据,它将发送一个确认,这个确认不是立即发送,通常推迟几分之一秒 deplayed ack
tcp 将保持它首部和数据的检验和
既然tcp报文段作为ip数据报来传输,而IP数据报的到达可能会失序,如果有必要,tcp将对收到的数据进行重新排序
将收到的数据以正确的顺序交给应用层
基于全双工来进行工作
端口号和通信识别
用于标记进程 范围在0-65535,通过五元组来识别一个通信
知名端口号: 分布在 0~1023 之间
端口号被正式注册:它们分布在 1024~49151 之间,不过这些端口号可用于任何通信用途。
Socket: 是由ip和port组合而成
五元组: 源地址,源端口,协议号,目标地址,目标端口
MTU: 网络最大传输单元
ip header 首部
- Version: ip版本号
- HeaderLength: 首部长度,每四个字节当做一个单位,最大位60
- TypeofServer(TOS): 确保某些紧急报文可以优先到达,服务类型 (8bits)
- TotalLength: 报文总长度
- Identification: 每一个ip包都有一个唯一id,如果IP包被再次拆分 那么被拆分的ip包 id都是一致的
- Fragment Offset: 偏移量,分片后,片与片之间的 片偏移量
- MF: 这个片已经分了好多片
- DF:别分片,说明报文不允许分片
- TTL: 定义一个生命周期
- Protocol:标记IP包内层协议类型,TCP 协议号6 ,UDP 的协议号17,ICMP 的协议号1,IGMP 协议号2
- HeaderChecksum: 首部校验,靠tcp重转
tcp header 首部
- SequenceNumber: 每次发送报文号码,等待对方进行确认
- ACknowlegement: 确认报文号码
- Reserved: 预留位
- FIN: 结束标记
- SYN:发送进行同步
- RST: 重置
- PSH: 推送
- ACK: 回复确认报文
- URG: 不缓冲,尽快发送到内核处理
- Urgent Pointer:紧急指针 值为1代表URG生效,值为0代表不生效
- TcpChecksum: tcp的校验码
- 有限状态机 FSM Finite State Machine
tcp 三次握手四次断开
tcp连接是全双工的,俩个信道,各自断开各自的信道,所以需要四次断开
最后断开会等待2ml时间,一般是120s
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!