运行在计算机上的进程使用进程标识符PID来表示,但是不同操作系统之间(Windows,Linux,Mac OS)进程标识符是不同的,为了达到统一,TCP/IP协议的运输层规定应用进程用端口号来表示。
端口号用16比特来标识,取值范围为0~65535。
UDP(User Datagram Protocol)用户数据报。
TCP(Transmission Control Protocol)传输控制协议。
UDP是无连接的,TCP是面向连接的
UDP支持单播、多播和广播,TCP只支持单播
UDP是面向应用报文的,TCP是面向字节流的
UDP向上提供无连接不可靠的传输服务,尽最大努力交付,适用于IP电话,视频会议等实时应用;TCP向上层提供面向连接的可靠传输服务,适用于文件传输等。
UDP首部仅8个字节,TCP首部最小长度为20字节,最大长度为60字节
TCP是面向连接的协议,它基于运输连接来发送TCP报文段。TCP运输连接有三个阶段:
一开始,服务器进程创建传输控制块,用来存储TCP连接中的一些重要信息,然后服务器进程进入监听(Listen)状态,准备接收客户端进程的连接请求。客户端进程首先也是建立传输控制块,随后进行下面三次握手:
保活计时器的作用:TCP服务器进程每次收到客户端进程的数据,就重新设置一次保活计时器(例两小时),如果保活周期内未收到客户端进程发来的数据,则到时后服务器进程发送一个探测报文段,每隔75s发送一次,若连续发送10个报文段仍无响应,就关闭连接。
流量控制(flow control)就是让发送方发送速率不要太快,让接收方来得及接收,实现机制是滑动窗口。
TCP接收方利用自己接收窗口的大小来限制对方发送窗口的大小。
TCP发送方接收到对方的零窗口通知后,应启动持续计时器,持续计时器超时后,向接收方发送零窗口报文段。
拥塞(Congestion),在某段时间,若对某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。只要有发送报文段出现丢失,发送方就默认产生了网络拥塞。
网络中的带宽,交换节点中的缓存、处理机等都是网络资源。
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
下面是四种拥塞控制算法,有这些假设:1、数据是单方向传送的;2、接收方总是有足够大的缓存空间,发送方的发送窗口大小仅由网络拥塞程度来决定;3、以TCP最大报文段为单位,而不是以字节为单位
慢开始是指一开始向网络注入的报文段比较少,而不是指拥塞窗口(在假设中等于发送窗口)增长得慢,相反,拥塞窗口的增长速度是指数型的。
拥塞避免不是指完全避免拥塞,而是指在拥塞避免阶段将拥塞窗口的增长控制为线性增长,使网络不容易出现拥塞。
发送方维护一个慢开始门限,当发送窗口小于慢开始门限时,使用慢开始算法;当发送窗口大于慢开始门限时,不使用慢开始算法,而使用拥塞避免算法;当发送窗口等于慢开始门限时,既可以使用慢开始算法,也可以使用拥塞避免算法。
当网络发生拥塞时,将慢开始门限设置为发生拥塞时的拥塞窗口值的一半,并且将拥塞窗口值设置为1。
有时个别报文段会丢失,但此时并未发生网络拥塞,这导致发送方超时重传,且把拥塞窗口设置为1,并开始慢开始算法,这样降低了传输效率。而快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
快重传,即让发送方尽快重传,而不是等待超时重传计时器超时再重传。要求接收方不要等待自己发送数据时才捎带确认,而是立即确认,即使收到了失序的报文段也要立即对已收到的报文段重复确认,发送方一旦收到三个重复确认,就立即重传,而不是等待超时重传计时器。
快恢复,发送方一旦收到三个重复确认,就知道现在只是丢失了个别的报文段,于是不启动慢开始算法,而是启动快恢复算法。发送方把慢开始门限和拥塞窗口调整为之前的一半,开始执行拥塞避免算法。
超时重传时间的选择是TCP比较复杂的问题之一。
不能使用单次测量的往返时间来计算超时重传时间,而应该利用每次测量得到的往返时间,计算加权平均往返时间RTTs,再得到超时重传时间RTO。
RTTs=(1-α) x 旧RTTs+α x 新RTTs
α值一般设为0.125。
RTO=RTTs+4 x RTTD
针对超时重传时无法测准往返时间RTT的解决:只要超时重传了,就不采用其往返时间样本。但是这样有可能时延突然增大了很多,而超时重传时间一直无法更新,就会出现一直超时重传的情况。
解决办法:报文段每重传一次,就对超时重传时间翻1倍。
基于以字节为单位的滑动窗口实现可靠传输。
可以使用三个指针实现滑动窗口的维护:
某一时刻,发送方的发送窗口不一定等于接收方的接收窗口,原因:
对于不按序到达的字节流,TCP无明文规定,有两种处理方式:
TCP要求有累计确认和捎带确认机制,这样可以减小传输开销。但接收方不应过分推迟发送确认,否则会导致发送方的超时重传,TCP规定推迟时间不应超过0.5s,且如果收到最大长度的报文段,应该每隔一个报文段就发送一个确认。捎带确认往往很少发生,因为大多数应用程序很少同时双向发送数据。TCP通信是全双工通信,因此每一方都有自己的发送窗口和接收窗口。
应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
网络应用程序在各种端系统上的组织方式和它们之间的关系主要有:客户/服务器方式(C/S)和对等方式(P2P)。
客户/服务器(Client/Server,C/S)是因特网上最传统和最成熟的方式,WWW,SMTP,FTP等都是采用C/S方式,常用计算机群集来构成一个强大的虚拟服务器。
对等方式(Peer to Peer,P2P)没有固定的服务请求者和服务提供者,应用主要有P2P文件共享,即时通信,P2P流媒体,分布式存储等。最突出特性是可拓展性。
万维网(World Wide Web)不是特殊的计算机网络,而是运行在因特网上的分布式应用。通过网页之间的超链接将不同网页连接成逻辑上的信息网。
目前流行的浏览器和它们使用的内核:
浏览器最重要的部分是渲染引擎,也就是浏览器内核,负责对页面内容进行解析和显示。
为了方便访问在世界范围的文档,万维网使用统一资源定位符URL来指明因特网上任何种类资源的位置。URL一般形式由以下部分组成:
例:
超文本传输协议(HyperText Transfer Protocol,HTTP),HTTP协议定义了怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传输给浏览器。
HTTP/1.0使用非持续连接方式,HTTP/1.1使用持续连接方式。
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)提供了即插即用联网,这种机制允许一台计算机加入新网络时,可自动获取IP地址等网络配置信息而不用手工参与。
DHCP在运输层使用UDP协议封装。DHCP在为获取到IP地址后设置IP地址为0.0.0.0。
现在是每一个网络至少有一个DHCP中继代理(路由器),而不是每一个网络有一台DHCP服务器,它配置了DHCP的IP地址信息,作为各网络中计算机和DHCP服务器的桥梁。
域名系统(Domain Name System,DNS)
域名转换IP过程:
因特网采用层次树状结构的域名系统。域名的结构由若干个点号隔开,分别表示不同级别的域名。每一级不超过63字符,不区分大小写字母,级别最低在最左边,级别最高在最右边,完整域名不超过255个字符。
顶级域名分为以下三类:
我国将二级域名划分为以下两类
因特网的域名空间:
DNS使用分布在各地的四种服务器来实现域名到IP地址的转换。
文件传送协议(File Transfer Protocol,FTP)是因特网上使用最广泛的文件传送协议。
FTP提供交互式访问,允许客户指明文件的类型和格式,并允许文件具有存取权限。FTP屏蔽了各操作系统的细节,适合于在因特网络中任意计算机之间传输文件。
FTP客服和服务器之间要建立两个并行的TCP连接,控制连接使用21端口和数据连接使用20端口。
电子邮件系统有三个主要组件构建:用户代理,邮件服务器,以及电子邮件协议。电子邮件协议包括发送协议SMTP和读取协议POP或IMAP。
简单邮件传送协议(Simple Mail Transfer Protocol,SMTP),SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或者二进制文件,不能满足音频视频等的需要,许多国家的文字也不能用SMTP传送。
为了解决上述问题,提出了多用途因特网邮件拓展(Multipurpose Internet Mail Extensions,MIME),发送方和接收方都需要用它转换。MIME不仅可用于SMTP,也可用于HTTP。
邮局协议(Post Office Protocol,POP),是因特网正式标准。用户只能下载并删除或者下载并保留,不能管理自己的邮件。
因特网邮件访问协议(Internet Mail Access Protocol,IMAP),是因特网建议标准。用户在自己的计算机上就可以操作邮件服务器中的邮箱。
POP和IMAP都是用TCP协议。
通过浏览器登录邮件服务器万维网网站就可以撰写,收发,阅读和管理电子邮件。