OSI七层简单介绍

  • 应用层:提供操作系统和应用程序的接口
  • 表示层:表示数据如何加密、如何压缩的
  • 会话层:将不同应用程序数据分离
  • 传输层:提供可靠和不可靠的数据传输和重传、纠错的功能
  • 网络层:提供IP地址,通过IP地址路由器能选择数据从哪一条路径走是最优的
  • 数据链路层:将数据分组拆分成字节,合并成数据帧
  • 物理层:在设备与设备之间传输比特流

OSI七层详解

应用层
  作用:用户可以通过应用程序和操作系统通信
  协议:HTTP、SMTP、FTP、Telnet
表示层
  作用:数据以何种方式表示,由于计算机只识别0和1,比如我们想存储word文档和图片、视频之类的数据,就需要表示层对数据进行转码让计算机识别
会话层:
  作用:负责表示层实体之间的建立、管理和终止会话,对不同类型的数据进行分离(比如QQ和YY的数据进行分离),它提供了单工、半双工、全双工
  单工:
  半双工:我发数据给你,等我发完 你才能发数据给我
  全双工:你即可以发数据给我,我也可以发数据给你
传输层:
  作用:提供可靠和不可靠的数据传输和重传、纠错的功能
  TCP
  UDP
网络层:
  作用:提供IP地址,通过IP地址路由器能选择数据从哪一条路径走是最优的
数据链路层:
  物理层:将数据转换成比特流通过网线传输出去

TCP三次握手建立连接和四次握手断开连接

1.主机A发送SYN同步报文给主机B,这是主机A进入SYNsend状态等待主机B确认

2.主机B收到SYN同步报文后,发送ACK确认报文给主机A

3.主机A收到主机B发来的ACK确认报文后,主机A再发送一个ACK确认报文给主机B

4.这时TCP三次握手建立连接成功

1.主机A发送一个FIN结束报文给主机B,用来关闭主机A到主机B的连接

2.主机B收到这个FIN结束报文后,然后发送给主机A一个ACK确认报文

3.主机B再发送一个FIN结束报文给主机A,用来关闭与主机A的连接

4.主机A发送一个ACK确认报文给主机B

5.这是TCP四次握手断开连接

TIME_WAIT状态原理 

如图四次握手断开连接

通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态

主机A主动关闭连接时,会发送最后一个ACK确认报文给主机B,然后就会进入TIME_WAIT状态,在等待两个MSL时间,进入closed状态

MSL时间是什么

MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间IP数据包将在网络中消失 。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒。

最新文章

  1. android Broadcast广播消息代码实现
  2. poj 1442
  3. 使用Rsync进行文件的同步与备份
  4. IPv6协议
  5. iOS开发之格式化日期时间(转)
  6. Jetty和Tomcat的选择:按场景而定
  7. RSA非对称加密 php的openssl实现
  8. mybaits 学习
  9. 浅析Quartz的集群配置
  10. cdoj 1253 阿里巴巴和n个大盗 博弈论
  11. C# Wpf异步修改UI,多线程修改UI(二)
  12. Python installation
  13. Openstack Swift 原理、架构与 API 介绍
  14. 通读cheerio API ——NodeJs中的jquery
  15. kvm虚拟机网络管理
  16. Vue开发爬坑记录
  17. ThinkPHP框架 【 AJAX方法返回 】 例子:简单添加一条数据 和 查询一个表里的数据
  18. vi如何设置自动缩进?
  19. 【HDOJ1531】【差分约束+添加超级源点】
  20. 【FindReport】图表快速部署开发

热门文章

  1. java web 学习笔记 - 表达式语言
  2. 【原】常用shell命令
  3. CSU 2018年12月月赛 G(2219): Coin
  4. 笔试算法题(19):判断两条单向链表的公共节点 & 字符集删除函数
  5. 前端常用的js 插件合集
  6. 树莓派 -- 输入设备驱动 (key) 续2: 转载 Setting up a GPIO-Button “keyboard” on a Raspberry Pi
  7. assert.ok()详解
  8. stark组件之显示页面内容搭建(六)
  9. 【BZOJ 1202】 [HNOI2005]狡猾的商人(枚举区间也可行)
  10. 100ns周期200ns的正脉冲波形形状描述