TCP/IP结构对应OSI
TCP/IP |
OSI |
---|---|
应用层 |
应用层 表示层 会话层 |
主机到主机层(TCP)(又称传输层) |
传输层 |
网络层(IP)(又称互联层) |
网络层 |
网络接口层(又称链路层) |
数据链路层 |
物理层 |
OSI中每一层都有每一层的作用
第七层应用层, 直接对应用程序提供服务, 应用程序可以变化, 但要包括电子消息传输
第六层表示层, 格式化数据, 以便为应用程序提供通用接口, 这可以包括加密服务
第五层会话层, 在两个节点之间建立端连接. 此项服务包括建立连接是以全双工方式还是以半双工方式进行设置, 尽管可以在第四层中处理双工方式
第四层传输层, 常规数据传送,面向连接或无连接. 包括全双工或半双工, 流控制或错误恢复服务
第三层网络层, 本层通过寻址来建立两个节点间的连接, 它包括通过互连网络来路由或中继数据
第二层数据链路层, 在此层将数据分 帧, 并处理流控制. 本层指定拓扑结构和提供硬件寻址
第一层物理层, 原始比特流的传输,电子信号传输和硬件接口
TCP/IP每一层的作用
1) 网络访问层(Network Access Layer)
在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。
2) 互联网层(Internet Layer)
是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。
这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。
互联网层使用因特网协议(IP,Internet Protocol)。TCP/IP参考模型的互联网层和OSI参考模型的网络层在功能上非常相似。
3) 传输层(Tramsport Layer)
使源端和目的端机器上的对等实体可以进行会话。
在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。
TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。
UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。
4) 应用层(Application Layer)
包含所有的高层协议,包括:虚拟终端协议(TELNET,TELecommunications NETwork)、文件传输协议(FTP,File Transfer Protocol)、电子邮件传输协议(SMTP,Simple Mail Transfer Protocol)、域名服务(DNS,Domain Name Service)、网上新闻传输协议(NNTP,Net News Transfer Protocol)和超文本传送协议(HTTP,HyperText Transfer Protocol)等。
TELNET允许一台机器上的用户登录到远程机器上,并进行工作;
FTP提供有效地将文件从一台机器上移到另一台机器上的方法;
SMTP用于电子邮件的收发;
DNS用于把主机名映射到网络地址;
NNTP用于新闻的发布、检索和获取;
HTTP用于在WWW上获取主页。
TCP |
UDP |
---|---|
面向连接、字节流 |
面向非连接、面向报文 |
传输可靠、只能是点到点传输 |
传输不可靠、支持一对一,一对多,多对一和多对多传输 |
传输大量数据 |
传输少量数据 |
速度慢、首部开销20个字节 |
速度快 、首部开销8个字节 |
TCP | UDP |
发送消息之类的场景,因为你要确保 用户的消息不会丢失,需要使用TCP协议 |
进行视频聊天或者看直播,那可以使用UDP协议,因为即使几个画面丢失了,对用户来说影响也不是很大。 |
对于发送端:
对于接收端:当收到数据帧后,将窗口向前移动一个位置,并发回确认帧,若收到的数据帧落在接收窗口之外,则一律丢弃。
停止等待协议原理ARQ:
后退N帧协议:
选择重传ARQ原理(发送窗口大小>1、接收窗口大小>1):
a. 优:因连续发送数据帧而提高了信道的利用率
b. 缺:重传时又必须把原来已经传送正确的数据帧进行重传(仅因为这些数据帧前面有一个数据帧出了错),将导致传送效率降低
由此可见,若信道传输质量很差,导致误码率较大时,后退N帧协议不一定优于停止-等待协议
为什么TCP建立连接需三次握手?
防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致形成死锁、浪费资源
比如:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但是server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了,由于client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据。所以没有采用“三次握手”,这种情况下server的很多资源就白白浪费掉了。
---------------------
------------------------------------------------------
为什么需要四次挥手?
TCP是全双工模式,当client发出FIN报文段时,只是表示client已经没有数据要发送了,client告诉server,它的数据已经全部发送完毕了;但是,这个时候client还是可以接受来server的数据;当server返回ACK报文段时,表示它已经知道client没有数据发送了,但是server还是可以发送数据到client的;当server也发送了FIN报文段时,这个时候就表示server也没有数据要发送了,就会告诉client,我也没有数据要发送了,如果收到client确认报文段,之后彼此就会愉快的中断这次TCP连接。
---------------------
5、当你输入域名访问一个网站的时候,背后的过程是什么?
第一步就是域名解析,域名解析的话你可以说一下域名缓存在哪些地方,然后如果你域名在本地没有缓存的话,是如何通过DNS来进行域名解析的,如果你的DNS服务器上没有保存那个域名,那你的DNS服务器将如何处理来得到这个域名的ip。第二步就是说一下TCP连接的三次握手的过程。其他拓展内容有很多可以说,看你知识储备。例如你可以说通过CDN来进行访问加速。也可以说目前网站基本上都是前后端分离的,访问的时候会先访问反向代理服务器进行负载均衡之类的。第三步就是下载js/css/图片等资源进行浏览器渲染。
示意图:
换句话说,HTTPS 跟 HTTP 一样,只不过增加了 SSL。
HTTP 包含如下动作:
HTTP 和 HTTPS 的不同之处
为什么需要 HTTPS ?
超文本传输协议 (HTTP) 是一个用来通过互联网传输和接收信息的协议。HTTP 使用请求/响应的过程,因此信息可在服务器间快速、轻松而且精确的进行传输。当你访问 Web 页面的时候你就是在使用 HTTP 协议,但 HTTP 是不安全的,可以轻松对窃听你跟 Web 服务器之间的数据传输。在很多情况下,客户和服务器之间传输的是敏感歇息,需要防止未经授权的访问。为了满足这个要求,网景公司(Netscape)推出了HTTPS,也就是基于安全套接字层的 HTTP 协议。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。