【计算机网络】运输层与应用层知识点
运输层
运输层向它上面的应用层提供通信服务。
真正通信的主体是主机中的一个进程和另一个主机的一个进程交换数据。网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。运输层向高层用户屏蔽了下面网络核心的细节,使应用进程看见的就好像在两个运输层实体之间有一条端到端的逻辑通信信道。
运输层两种协议:面向连接的TCP和无连接的UDP。
端口:是应用层的各种协议进程与运输实体进行层间交互的一种地址。运输层用一个16位端口号标志一个端口,因此
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(trap) | HTTPS |
---|---|---|---|---|---|---|---|---|---|
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 | 443 |
UDP用户数据报协议(User datagram protocol)
无连接、尽最大努力交付、面向报文、没有拥塞控制、支持一对一一对多多对一多对多的交互通信、首部开销小。
发送数据前不需要建立连接。
不保证可靠交付。
处理报文时,既不合并也不拆分,保留报文的边界,加上首部后就向下传,或去除首部后就向上交付。因此报文数据部分长度就是应用程序发送数据的长度
首部只有8个字节。
伪首部仅仅是为了计算检验和,把首部和数据部分一起检验:二进制反码计算加法的方式。
伪首部中的17表示是UDP的协议。
TCP传输控制协议(Transmission control protocol)动画详解TCP,超级厉害
面向连接、点对点、可靠交付、全双工通信、面向字节流。
在使用TCP协议前必须先建立TCP连接。
每条TCP连接只能有两个端点。
通过TCP连接传送的数据,无差错、不丢失、不重复、按序到达。
允许通信双方的应用进程在任何时候都能发送数据。
TCP把应用程序交下来的数据看成一连串无结构的字节流。根据对方给出的窗口值和当前网络拥塞程度确定一个报文段应该包含多少个字节。
TCP连接的端点叫做套接字(Socket)。\(套接字 socket=(IP地址:端口号)\)
每一条TCP连接唯一地被通信两端的两个端点所确定。\(TCP连接::={socket_1,socket_2}={(IP_1:port_1),(IP_2:port_2)}\)
停止等待协议
正常情况:每发送完一个分组就停止发送,等待对方确定,在收到确认后再发送下一个分组。
出错情况:当发送方A发送数据M1后等待收到确认时,若B接收M1检测出了差错,就丢弃M1,A超过了一段时间(超时计时器)仍然没有收到确认,就认为刚才发送的分组丢失,因此重传前面发送过的分组(超时重传)。
确认丢失:如果B再次收到A的信息,以前正常收到过就丢弃重复分组,然后发送确认。A如果以前收到过B的确认,那么收到确认后丢弃即可。
缺点:信道利用率过低。
信道利用率计算\(U=\frac{T_D}{T_D+RTT+T_A}\)。
其中\(T_D\)是A发送分组需要的时间,等于分组长度除以数据率。\(T_A\)是B发送确认分组的时间,RTT是往返时间。
ARQ(Automatic Repeat request)自动重传请求:接收方不需要请求发送方重传某个出错的分组。
连续ARQ协议
发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。接收方一般采用累积确认的方式,对按序到达的最后一个分组发送确认。
TCP报文格式
序号:在TCP连接中传送的字节流中的每一个字节都按顺序编号。
确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号=N,表明到序号N-1为止的所有数据都已正确接收。
数据偏移:数据部分起始处的位置。
紧急URG:=1表明此报文段中有紧急数据,应尽快传送
确认ACK:=1时确认号才有效,在连接建立后所有传送的报文段必须把ACK置为1。
推送PSH:当两个应用进程进行交互式通信时,一端的应用进程希望在键入一个命令后立即能够接收到对方的响应,而不是等整个缓存都填满后再向上交付。
复位PST:=1表示TCP连接出现严重差错,必须释放连接,再重新建立连接。
同步SYN:再连接建立时用来同步序号。SYN=1&&ACK=0,表示是一个连接请求报文。SYN=1&&ACK=1,同意建立连接。
终止FIN:=1时表明此报文段的发送方数据发送完毕,要求释放运输链接。
窗口:接收方让发送方设置其发送窗口的依据。允许对方发送的数据量,经常在动态变化着。
检验和:和UDP计算检验和一样,也需要加入伪首部。
紧急指针:URG=1时有效,指出本报文段中的紧急数据字节数。
最大报文段长度MSS:每一个TCP报文段中数据字段的最大长度。
TCP的可靠传输
以字节为单位的滑动窗口:凡是已经发送过的数据,在未收到确认前都必须暂时保留,以便在超时重传时使用。因为TCP的累积确认,当收到一个确认号,则证明在此之前的所有序号均接收成功。
发送缓存:
- 发送应用程序传送给发送方TCP准备发送的数据
- TCP已发送但尚未收到确认的数据
接收缓存:
- 按序到达的、但尚未被接收应用程序读取的数据
- 未按序到达的数据
超时重传时间选择:RTO(Retransmission Time-Out)=\(RTT_s+4\times RTT_D\)。
其中\(RTT_S=(1-\alpha)\times(旧RTT_s)+\alpha\times(新RTT样本)\)。RTT表示报文段往返时间,每一次的测量都基座一个样本。\(\alpha\in[0,1)\),一般取0.125。
而\(RTT_D\)是RTT的偏差的加权平均值,第一次测量时,\(RTT_D\)值取测量到的RTT样本值的一般,以后的测量中,使用如下公式计算:\(新RTT_D=(1-\beta)\times(旧RTT_D)+\beta\times|RTT_s-新RTT样本|\)。\(\beta\in[0,1)\),一般取0.25。
TCP的流量控制
让发送方的发送速率不要太快,让接收方来得及接收。TCP的接收窗口的单位是字节。
TCP的拥塞控制
若网络中有许多资源同时呈现供应不足,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。窗口大小取决于网络的拥塞程度,并动态变化。
慢开始:当主机开始发送数据时,因不清楚网络的负荷情况,所以先探测一下,由小到大逐渐增大发送窗口。cwnd变化:1->2->4等等
拥塞避免:设置慢开始门限ssthresh。当cwnd>ssthresh,使用拥塞避免,让cwnd缓慢增大,每次增加1。
网络拥塞:当网络出现超时,ssthresh=cwnd/2,然后进入慢开始阶段
快恢复:个别报文段在网络中丢失,但实际上网络并未发生拥塞。只要发送方一连收到3个重复确认,应当立即进行重传。采用快恢复:ssthresh=cwnd/2,cwnd=ssthresh。然后继续拥塞避免阶段。
发送方窗口的上限值=Min[rwnd,cwnd],其中rwnd为接收窗口大小,cwnd为拥塞窗口大小。
TCP连接建立
三报文握手。
TCP连接释放
四次挥手
其中MSL为最长报文段寿命。
应用层
每个应用层协议都是为了解决某一类应用问题,而问题的解决必须通过位于不同主机中的多个应用进程之间的通信和协同工作完成。
域名系统DNS(Domain name systerm)
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写,级别最低的域名卸载最左边,最高的写在最右边。
顶级域名(Top level domain)分为三大类:
- 国家顶级域名nTLD:cn表示中国,us表示美国,uk表示英国等。
- 通用顶级域名gTLD:com公司企业,net网络服务机构,org非营利性组织,int国际组织,edu教育组织,gov政府部门,mil军事部门...
- 基础结构域名:arpa,用于反向域名解析。
我国二级域名的划分:
- 类别域名:ac科研机构,com工商金融等企业,edu教育机构,gov政府机构,mil国防机构,net提供互联网服务的机构,org非盈利组织
- 行政区域名:一般为行政区的缩写
互联网的名字空间是按照机构的组织来划分的,与物理的网络无关,与IP地址中的子网无关。
权限域名服务器:用来保存该区中所有主机的域名到IP地址的映射。
当一台主机发送出DNS查询请求时,该查询请求报文发送给本地域名服务器。只要自己无法解析,就首先求助于根域名服务器。
根域名服务器并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应该找哪一个顶级域名服务器进行查询。
域名解析过程:
- 递归查询:如果本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发送查询请求报文。
- 迭代查询:本地域名服务器向根域名服务器的查询过程。当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所查询IP地址,要么告诉它下一步应该向哪个域名服务器进行查询。然后本地域名服务器继续后续查询。
文件传送协议
文件传送协议FTP(file transfer protocol):提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。
主进程的工作步骤:
1. 打开熟知端口(端口号为21),使客户进程能够连接上。
2. 等待客户进程发出连接请求
3. 启动从属进程处理客户进程发来的请求。
4. 回到等待状态,继续接受其他客户进程发来的请求。
FTP的客户和服务器之间建立两个并行TCP连接:控制连接和数据连接。
简单文件传送协议TFTP(Trivial file transfer protocol)
可用于UDP环境,且代码所占内存较小。主要特点:
1. 每次传送数据报文中有512字节的数据
2. 数据报文按序编号,从1开始
3. 支持ASCII码或二进制传送
4. 可对文件进行读或写
5. 使用简单的头部
远程终端协议TELNET
是一个简单的远程终端协议,TELNET能将用户的击键传到远地主机,同时能将远地主机的输出通过TCP连接返回到用户屏幕。
万维网WWW
统一资源定位符URL(Uniform resource locator):用来表示从互联网上得到的资源位置和访问这些资源的方法。格式:<协议>://<主机>:<端口>/<路径>。不区分大小写。
超文本传输HTTP(hypertext transfer protocol):使用TCP连接进行可靠传送。默认端口号是80。虽然它使用TCP连接,但通信双方在交换HTTP报文之前不需要先建立HTTP连接。HTTP协议是无状态的,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次访问时相同。
报文类型
- 请求报文
- 响应报文
代理服务器(proxy server):把最近的而一些请求和响应暂存在本地磁盘中,若新请求与暂存请求相同,就返回暂存请求访问。因此被称为万维网高速缓存。
电子邮件
邮件传送协议:SMTP(Simple mail transfer protocol)和通用互联网邮件扩充MIME(Multipurpose internet mail extensions)
一个电子邮件系统有三个组成构件:用户代理、邮件服务器、邮件发送协议和邮件读取协议
邮件读取协议:
邮局协议第三版POP3和网际报文存取协议IMAP(Internet message access protocol)
动态主机配置协议DHCP(Dynamic host configuration protocol)
需要IP地址的主机在启动时向DHCP服务器广播发送发现报文(目的IP地址全为1,255.255.255.255,源IP地址全为0),这时主机就成为DHCP客户。
DHCP服务器对此广播报文进行回答,先在数据库中查找该计算机配置信息。若找到返回找到信息。否则,从服务器的IP地址池中去一个地址分配给该计算机。
简单网络管理协议
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能、服务质量等。
简单网络管理协议SNMP(Sample network management protocol)中的管理程序和代理程序按客户服务器方式工作。