七层网络模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

五层网络模型

1. 应用层:确定进程之间通信的性质以满足用户需求。(各种传输协议)

2. 运输层:负责主机间不同进程的通信。(TCP/UDP)

3. 网络层:负责分组交换网中不同主机间的通信。

4. 数据链路层:负责将网络层的IP数据报组装成帧。

5. 物理层:透明地传输比特流。

四层网络模型:(TCP/IP分层模型)

1. 网络接口层:包括用于协作IP数据在已有网络介质上传输的协议。这样的协议提供TCP/IP协议的数据结构和实际物理硬件之间的接口。

2. 网间层:对应七层模型的网络层。本层负责数据的包装、寻址和路由。

3. 传输层:对应七层模型的传输层。本层提供两种端到端的通信服务。TCP提供可靠的数据流运输服务,UDP提供不可靠的用户数据报服务。

4. 应用层:对应七层模型的应用层和表示层。

TCP头部:

16位端口号:告知主机该报文段来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)。

32位序号:一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号。(相当于数据在字节流上的字节偏移)

32位确认号:对另一方发送来的TCP报文段的相应。其值是收到的TCP报文段的序号值加1。

4位头部长度:标识该TCP头部有多少个32bit(4Byte)。

6位标志位:URG,ACK,PSH,RST,SYN,FIN

URG表示紧急指针是否有效

ACK表示确认号是否有效

PSH提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间

RST表示要求对方重新建立连接

SYN表示请求建立一个连接

FIN表示通知对方本端要关闭连接

16位窗口大小:告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据。

16位校验:

16位紧急指针:

注意点:

1. TCP包没有IP地址。这是IP层的任务。

2. 一个TCP连接需要4个元组(src_ip, src_port, dst_ip, dst_port)。准确的说是五元组,因为还包括一个协议。

3. 序号用来解决网络包乱序问题。

4. ACK用于确认收到,用来解决不丢包的问题。

5. 窗口,即滑动窗口,用于解决流控问题。

6. TCP Flag包类型,用于操控TCP的状态机。

TCP状态流转:

三次握手:SYN J(SYN_SEND),SYN K ACK J+1(SYN_RECV),ACK K+1(ESTABLISHED)

三次握手主要是初始化双方序号的初始值,作为以后数据通信的序号。

四次挥手:FIN M,ACK M+1 FIN N,ACK N+1

四次挥手是因为TCP传输是全双工的,所以双方都需要发送FIN和ACK。

TCP超时重传:

TCP传输的4种情况:数据顺利到达,顺利相应ACK;数据包中途丢失;数据包顺利到达,ACK中途丢失;数据包顺利到达,对端未响应或被丢弃。

TCP滑动窗口:(待补充)

TCP拥塞控制:(待补充)

最新文章

  1. Jquery,jquery-cookie.js 做的点击记住用户名和密码!
  2. python27 + windows7 报错 No module named requests
  3. git 使用入门
  4. 洛谷 P1372 又是毕业季I Label:None
  5. VC++6.0编译器标记的那些内存值
  6. web可用性测试
  7. f2fs解析(八)node 管理器中的node_info
  8. SQL Server 监控 使用sp_trace_create
  9. Spring学习总结(0)——Spring详解
  10. java数据类型和运算优先级
  11. asp.net mvc 生成条形码
  12. JSP简单练习-使用JDOM创建xml文件
  13. 随机获取部分List<Object>集合
  14. [Unity Shader]光照模型对物体的假设
  15. UVa 10602 - Editor Nottoobad
  16. Easy UI下拉列表默认选中(多行)与为文本框赋值
  17. 一起写框架-Ioc内核容器的实现-基础API的定义(三)
  18. CLR via C#读书日记一' 引用类型和值类型'
  19. dense prediction问题
  20. JavaScript变量提升的理解

热门文章

  1. Spring Cloud Hystrix原理篇(十一)
  2. Java中jna的用法
  3. NOIP初赛篇——06数制转换
  4. 用隧道协议实现不同dubbo集群间的透明通信
  5. WPF APP 启动时增加特殊逻辑
  6. 剑指offer 面试题6:从尾到头打印链表
  7. webpack知识点整理
  8. awk中引用shell变量的方法
  9. 基于Dockfile构建JAVA环境网站镜像
  10. DataGridView控件使用Demo