计算机网络总结
Posted smalljunjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络总结相关的知识,希望对你有一定的参考价值。
应用层:
应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文。
运输层:
运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
网络层:
在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报 ,简称 数据报。
数据链路层:
数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装程帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
物理层:
实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。
运输层的两大协议:
传输控制协议 TCP(Transmission Control Protocol)-- 提供面向连接的,可靠的数据传输服务。传输的形式是字节流
用户数据协议 UDP(User Datagram Protocol)-- 提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。传输的形式是数据报文段。
TCP协议如何保证可靠传输:
一.
自动重传请求 ARQ 协议:它的信道利用率较低
超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
停止等待协议:
1.停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组;
2.在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认,表明前一个确认信息,发送方没有收到,如果收到了也不会发送重复分组啊;
连续ARQ协议:不能向发送方反映接收方已经正确收到的所有分组信息
连续 ARQ 协议可提高信道利用率。发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了。
缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。 比如:发送方发送了 5条 消息,中间第三条丢失(3号),这时接收方只能对前两个发送确认。发送方无法知道后三个分组的下落,而只好把后三个全部重传一次。这也叫 Go-Back-N(回退 N),表示需要退回来重传已经发送过的 N 个消息(因为只收到了第二条的返回信息,就以为只成功了两条)
二.
通过滑动窗口来实现流量控制。
TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为 0 时,发送方一般不能再发送数据报,但有两种情况除外,一种情况是可以发送紧急数据,例如,允许用户终止在远端机上的运行进程。另一种情况是发送方可以发送一个 1 字节的数据报来通知接收方重新声明它希望接收的下一字节及发送方的滑动窗口大小。
流量控制是为了控制发送方发送速率,保证接收方来得及接收。
接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。
三.
为了进行拥塞控制,TCP 发送方要维持一个 拥塞窗口(cwnd) 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。
TCP的拥塞控制采用了四种算法,即 慢开始 、 拥塞避免 、快重传 和 快恢复。
慢开始:如果立即开始大量字节注入网络,就会引起网络阻塞,先试探一下,逐渐增大发送窗口,也就是从小到大逐渐增加拥塞窗口的值。
拥塞避免: 拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1.
快重传和快恢复:接受方接受到一个不按顺序的数据段,就会立即给发送方发送一个重复请求,发送方连续接受三个重复请求,会认为数据段丢失,会立即重传丢失的数据段。当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。
在浏览器输入url地址->显示主页的过程?
1.浏览器查找域名的ip地址(可以通过浏览器缓存,路由器缓存,DNS缓存)使用DNS协议获取域名对应的IP
2.浏览器向远程web服务器发送一个HTTP请求(cookie也会随着请求发送给服务端)(2-4的过程中,会使用TCP协议,与服务器建立TCP连接,建立TCP连接需要发送数据,发送数据在网络层使用IP协议)
3.服务器处理请求,根据传过来的参数,cookie信息生成一个html响应
4.服务器发回一个HTML响应
5.浏览器解析并渲染页面
6.连接结束
常见的状态码:
1XX:接受的请求正在处理
2XX:请求正常处理完毕
3XX:重定向状态码
4XX:客户端错误,服务器无法处理请求
5XX:服务器错误,服务器处理请求出错
TCP三次握手过程:
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
通俗来讲:
第一次握手:Client什么都不能确认,Server确认对方发送正常,确认自己接受正常
第二次握手:Client确认自己发送,接受正常,对方发送,接受正常,Server确认对方发送正常,自己接受正常
第三次握手:全部确认完毕
同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;
确认ACK,仅当ACK=1时,确认号字段才有效。
发送方先发送SYN=1,ACK=0,表示请求
接受方再发送SYN=1,ACK=1,表示同意连接
发送方再发送ACK=1,表示确认
四次挥手过程:
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭的状态。当另一方再没有数据发送的时候,发出连接释放通知,自己确认后就完全关闭TCP连接。
举个通俗例子:
A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。
终止FIN,用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;
具体的过程:
A端发送FIN=1,表示请求释放
B端发送ACK=1,表示确认字段有效
B端发送FIN=1,表示请求释放
A端发送ACK=1,表示确认有效
以上是关于计算机网络总结的主要内容,如果未能解决你的问题,请参考以下文章