本文是计算机网络课程传输层部分的笔记。
传输层两个协议简介
传输层有两个协议:TCP和UDP。
TCP:传输控制协议(Transmission Control Protocol)。文件分段传输,需要建立会话,可靠传输;流量控制功能
UDP:用户数据报协议(User Data Protocol) 一个数据包就能够完成数据通信,不分段;不需要建立会话,不需要流量控制;不可靠传输。
查看会话:netstat -n
查看是哪个进程创建的会话:netstat -nb
举例场景:
DNS域名解析:使用UDP协议;
QQ聊天:聊天记录 使用UDP协议;
QQ传文件:TCP协议;
发送邮件:可能很大需要分段,因此TCP协议;
FTP下载文件:TCP
屏幕广播 多播:UDP
传输层协议和应用层协议之间的关系
http = tcp + 80
https = tcp +443
rdp = tcp +3389
ftp = tcp + 21
访问共享文件夹=tcp + 445
SMTP【发送】 = TCP + 25
POP3【接收】 = TCP + 110
Telnet = TCP + 23
SQL = TCP +1433
DNS = UDP +53
服务和应用层协议之间的关系
服务是由端口决定的。
服务是启动状态才侦听端口。
网卡是大门,网卡设置安全,只允许80端口【Web服务】。只允许特定服务的端口。
服务使用TCP或者UDP的端口侦听客户端请求。
客户端使用IP地址定位服务器,使用目标端口定位服务。
可以在服务器网卡上设置只开放必要的端口,实现服务器的网络安全。
如何在Windows上安装服务
自带Telnet远程登录。远程桌面服务。
DNS服务
Web服务
SMTP服务
POP3服务
如何查看服务侦听的端口
netstat -an
查看服务器上侦听的窗口。netstat -n
查看建立的会话netstat -nb
查看建立会话的进程telnet 192.168.80.100 3389
测试远程计算机某个端口是否打开。
如何更改服务使用的默认端口
迷惑入侵者,使系统更加安全。
如何设置Windows网络安全
只开特定服务端口:本地连接属性——TCP/IP协议属性——高级——选项——属性
传输层功能和端口范围
传输层功能:
为相互通信的应用程序/应用进程提供了端到端的逻辑通信。(网络层是为主机之间提供了逻辑通信)。
传输层要对收到的报文进行差错校验。
传输层提供面向连接和无连接的服务。
传输层端口:16位端口号进行标志,标志本计算机应用层中的各进程。端口号只具有本地意义,本地不冲突即可。
熟知端口:数值一般为0-1023
登记端口号:数值为1024~49151
客户端口号:数值为49152-65535
UDP协议
UDP的主要特点:
UDP是无连接的,即发送数据之前不需要建立连接。
UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
UDP面向报文,没有拥塞控制,很适合多媒体通信的要求。
UDP支持一对一、一对多、多对一和多对多的交互通信。
UDP的首部开销小,只有8个字节。
传输控制协议TCP概述
TCP是面向连接的传输层协议。TCP把连接作为最基本的抽象。
TCP提供可靠交付的服务。
TCP提供全双工通信。
面向字节流。8bit = 1byte
每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。TCP连接的端点叫做套接字(socket)。端口号拼接到IP地址即构成了套接字。
套接字 socket = (IP地址:端口号)
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:
TCP连接::={socket1, socket2}
= {(IP1:port1),(IP2:port2)}
TCP如何实现可靠传输
可靠传输的工作原理————停止等待协议
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
这种可靠传输协议常称为自动重传请求(Automatic Repeat reQuest
)。
ARQ
表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。
停止等待协议优点是简单,缺点是信道利用率太低。
流水线传输:发送方可以连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。由于信道上一直有数据不间断地传送,这种传输方式可获得很高的利用率。
连续ARQ协议:发送方维持发送窗口(发送窗口是5),滑动窗口。
累积确认。
TCP如何实现流量控制
接收端告诉发送端接收窗口有多大来实现流量控制。
TCP协议如何避免网络拥塞
暂无
TCP报文段的首部格式
首部字节一般是固定部分的20个字节,还有长度可变的选项。
TCP报文段首部 | 含义 |
---|---|
源端口 | |
目标端口 | |
序号 | 第一个字节是整个文章的第几个字节。 |
确认号 | 收到数据包后,让继续发的号 |
数据偏移 | 占4位;记录第多少个字节是数据。十进制最大为15,代表最大15x4=60个字节。 |
URG | 设为1时代表紧急,发送端不排队,提前传走。 |
ACK | 确认号 |
PSH | push,设为1代表接收端不排队,直接交给应用程序 |
RST | reset,表明TCP会话出现严重错误,需要重新连接。 |
SYN | 同步,SYN攻击:伪造不存在的IP地址。land攻击:源地址和目的地址同一个。 |
FIN | 数据传完了,最后释放连接。 |
窗口 | 假设客户端接收缓存为65535字节,服务器就设置发送缓存65535字节(不能超过),反向同样也需要协商 |
检验和 | |
紧急指针 | URG=1时才起作用。指明紧急数据结束的位置。 |
选项(长度可变) | 可以规定最大数据报的长度MSS,是否支持选择性确认SACK,时间戳 |
填充 | 凑够四个字节整数倍 |
三个建立会话的数据包。MSS=1460数据包最大字节
TCP如何实现可靠传输
1.以字节为单位的滑动窗口技术
发送窗口由接收窗口大小来决定的。
超时重传时间的选择
$$新的RTTs = (1-\alpha)\times (旧的RTTs) + \alpha \times (新的RTT样本)$$
RFC2988推荐的$\alpha$值为1/8。
TCP的传输连接管理
传输连接有三个阶段,即:连接建立、数据传送和连接释放。
三次握手建立TCP连接
SYN=1,ACK=0,seq=x
SYN=1,ACK=1,seq=y,ack=x+1
ACK=1,seq=x+1,ack=y+1