OSI与TCP/IP

news/2024/5/18 16:08:58 标签: http, 网络协议, 网络, udp, tcpip
http://www.w3.org/2000/svg" style="display: none;">

https://img-blog.csdnimg.cn/20201227123737162.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI3ODY0NA==,size_16,color_FFFFFF,t_70" alt="来源于科来网络通讯协议图" />
上图来源于 科来网络通讯协议图
https://img-blog.csdnimg.cn/20201227124726751.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI3ODY0NA==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" />
结合 OSI 和 TCP/IP 的优点,采⽤⼀种只有五层协议的体系结构。

应用层

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应⽤层协议定义的是应⽤进程(进程:主机中正在运⾏的程序)间的通信和交互的规则。对于不同的⽹络应⽤需要不同的应⽤层协议。在互联⽹中应⽤层协议很多,如域名系统DNS,⽀持万维⽹应⽤的 HTTP协议,⽀持电⼦邮件的 SMTP协议等等。我们把应⽤层交互的数据单元称为报文

运输层

运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应⽤进程利⽤该服务传送应⽤层报⽂。“通⽤的”是指并不针对某⼀个特定的⽹络应⽤,⽽是多种应⽤可以使⽤同⼀个运输层服务。
运输层主要使用以下两种协议

  1. 传输控制协议 TCP(Transmission Control Protocol)–提供⾯向连接的,可靠的数据传输服
    务。
  2. ⽤户数据协议 UDP(User Datagram Protocol)–提供⽆连接的,不可靠的数据传输服务。

TCP,UDP 协议的区别
https://img-blog.csdnimg.cn/20201227141847150.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI3ODY0NA==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" />
TCP 提供⾯向连接的服务。在传送数据之前必须先建⽴连接,数据传送结束后要释放连接。 TCP 不提供⼴播或多播服务。由于 TCP 要提供可靠的,⾯向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握⼿来建⽴连接,⽽且在数据传递时,有确认、窗⼝、重传、拥塞控制机制,在数据传完后,还会断开连接⽤来节约系统资源),这⼀难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的⾸部增⼤很多,还要占⽤许多处理机资源。TCP ⼀般⽤于⽂件传输、发送和接收邮件、远程登录等场景。
UDP 在传送数据之前不需要先建⽴连接,远地主机在收到 UDP 报⽂后,不需要给出任何确认。虽然UDP 不提供可靠交付,但在某些情况下 UDP 确是⼀种最有效的⼯作⽅式(⼀般⽤于即时通信),⽐如: QQ 语⾳、 QQ 视频 、直播等等。

网络

在计算机⽹络中进⾏通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信⼦⽹。⽹络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。 在发送数据时,⽹络层把运输层产⽣的报⽂段或⽤户数据报封装成分组和包进⾏传送。在 TCP/IP 体系结构中,由于⽹络层使⽤IP协议,因此分组也叫IP数据报 ,简称数据报

数据链路层

数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在⼀段⼀段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将⽹络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每⼀帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。

物理层

在物理层上所传送的数据单位是⽐特。 物理层(physical layer)的作⽤是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。 使其上⾯的数据链路层不必考虑⽹络的具体传输介质是什么。“透明传送⽐特流”表示经实际电路传送后的⽐特流没有发⽣变化,对传送的⽐特流来说,这个电路好像是看不⻅的。

TCP 三次握手和四次挥手

三次握手
1.客户端–发送带有 SYN 标志的数据包–服务端
2.服务端–发送带有 SYN/ACK 标志的数据包–客户端
3.客户端–发送带有 ACK 标志的数据包–服务端
https://img-blog.csdnimg.cn/2020122714012989.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI3ODY0NA==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" />
四次挥手
1.客户端-发送⼀个 FIN,⽤来关闭客户端到服务器的数据传送
2.服务器-收到这个 FIN,它发回⼀个ACK,确认序号为收到的序号加1。和 SYN ⼀样,⼀个
FIN 将占⽤⼀个序号
3.服务器-关闭与客户端的连接,发送⼀个FIN给客户端
4.客户端-发回 ACK 报⽂确认,并将确认序号设置为收到序号加1
https://img-blog.csdnimg.cn/20201227140716714.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI3ODY0NA==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" />
任何⼀⽅都可以在数据传送结束后发出连接释放的通知,待对⽅确认后进⼊半关闭状态。当另⼀⽅也没有数据再发送的时候,则发出连接释放通知,对⽅确认后就完全关闭了TCP连接。


http://www.niftyadmin.cn/n/1034289.html

相关文章

关于http

在浏览器中输入url地址到显示主页的过程 DNS解析TCP连接发送HTTP请求服务器处理请求并返回HTTP报⽂浏览器解析渲染⻚⾯连接结束 来源于《图解HTTP》 HTTP长连接,短连接 在HTTP/1.0中默认使⽤短连接。也就是说,客户端和服务器每进⾏⼀次HTTP操作,就建…

数据库大表优化

单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万级以下是没有太大问题的。 字段: 1.尽量使用…

linux 编辑html文件命令,查看和编辑文件(Linux的快捷键和主要命令)

查看和编辑文件(Linux的快捷键和主要命令)cat filename | more这个命令用于查看一个被称为 "filename"的文本文件的内容,每次一页. "|"符号是"pipe" 符号(在很多美式键盘里, 它与"\"共用一个键). more 使文本内容的输出显示停止在每一…

SQL慢的原因

读操作慢 在大部分的项目中,对于数据库的读操作是要比写操作多的,所以首先来谈一下读操作慢的原因。 如何定位慢SQL MySQL中有慢查询日志,默认是关闭的,需要手动打开。 1.查询慢日志是否开启 mysql> show variables like %sl…

github最好的linux教程,一分钟认识GitHub

机缘巧合之下,我开始使用 GitHub ,但事实上,刚刚入门的我不知道如何才能使 GitHub 发挥他的全部功能。不久之前,我偶然听了李福斯先生对 GitHub 的介绍,受益匪浅。简单的来说, Git 是一个分布式的版本控制系…

unlimited linux释放内存,为什么不能分配内存

运行一段时间perror报错如下::Cannot allocate memoryTOP此时打印如下:Mem: 261060K used, 140316K free, 0K shrd, 3072K buff, 36812K cachedCPU: 70% usr 0% sys 0% nice 10% idle 0% io 20% irq 0% softirqLoad average: 0.62 0.97 1.14P…

如何解决数据库主从数据不一致的问题

数据库集群架构 目前流行的数据库集群架构包括以下三点: 一主多从:高可用方案,主库挂掉,从库会变成主库; 读写分离:减少单机数据库压力,主库提供写服务,从库提供读服务;…

linux磁盘大小汇总,Linux 磁盘空间大小统计du命令常见用法

1、对指定文件或文件夹进行统计,缺省单位为kbyte(k或千字节),下例对文件夹testa进行统计:[[email protected] ~]$ du -s testa1589308 testa2、对文件夹统计的正确做法,如果想知道某个文件夹所占空间的大小,用什么命…