一小时搞定计算机网络面试
一.计算机网络体系结构参考模型:
七层协议的作用:
1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介
质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到
达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比
特(Bit)。
2.数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访
问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输(CRC),这一层的数据叫做帧(Frame)。
3.网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选
择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种
连接的层,这一层的数据叫做分组(数据包:Packet)。
4.传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据, 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段(Segment)。
5.会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路(session),提供访问验证和会话管理。常见:服务器的用户登陆,和断定续传(会话协议数据单元SPDU)。
6.表示层:对数据进行翻译、加密和压缩,可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取(表示协议数据单元PPDU)。
例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
7.应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输
和终端仿真)提供网络服务(应用协议数据单元APDU)。
每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3 数据链路:PPP、FR、HDLC、VLAN、MAC 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP 传输层:TCP、UDP、SPX 会话层:NFS、SQL、NETBIOS、RPC 表示层:JPEG、MPEG、ASII 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
|
各层对应的典型设备如下:
应用层 ……………….计算机:应用程序,如FTP,SMTP,HTTP 表示层 ……………….计算机:编码方式,图像编解码、URL字段传输编码 会话层 ……………….计算机:建立会话,SESSION认证、断点续传 传输层 ……………….计算机:进程和端口 网络层…………………网络:路由器,防火墙、多层交换机 数据链路层 ………..网络:网卡,网桥,交换机 物理层…………………网络:中继器,集线器、网线、HUB
|
数据链路层:
1.物理设备
网桥(Bridge)像一个聪明的中继器。中继器从一个网络电缆里接收信号, 放大它们,将其送入下一个电缆。相比较而言,网桥对从关卡上传下来的信息更敏锐一些。网桥是一种对帧进行转发和过滤的技术,根据MAC分区块,可隔离碰撞。网桥将网络的多个网段在数据链路层连接起来。适用于局域网,涉及到的是算法是CSMA/CD(即载波监听多路访问/冲突避免)实现了过滤通信量,扩大了物理范围,匹配不同的物理层的速率,但是容易发生网络风暴,时延增加,没用实现流量控制会发生丢帧现象。 相关概念: 透明网桥: 采用自学习算法来建立自己的转发表。实现非人工配置,容易出现数据帧兜圈子的问题,因此采用的是生成树算法(spanning tree)生成一个网络拓扑子集防止回路。 交换机(多接口网桥): 计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。通过内部 交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表 中(局域网生成网络拓扑子集)实现无碰撞传输数据,能匹配不同的速率。 交换机工作于数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张 ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。还是过滤和转发。 Ps:交换机被广泛应用于二层网络交换,俗称“二层交换机”。 交换机的种类有:二层交换机、三层交换机、四层交换机、七层交换机分别工作在OSI七层模型中的第二层、第三层、第四层盒第七层,并因此而得名。 |
2.层协议
CSMA/CD协议 无连接的工作方式。 尽最大努力交付的服务(不可靠交付)。 协议要点:多点接入 载波监听 碰撞检测 工作过程:准备发送(必须先检测信道)-》检测信道(如果忙则等待空闲时间大于96比特时间则发送)-》发送数据帧(边发送边监听) 相关网页:http://baike.baidu.com/link?url=4f63cFm1DxHFmuVItj5WzqT9QTDyI_05n29KpIUM_XdgMqlpJKggBPvPrt-KRKsM |
网络层
1.分类的IP地址
1.1 二层IP地址
A类:A类地址:以0开头 |
第一个字节范围:0~127(1.0.0.0 - 126.255.255.255); |
B类地址:以10开头 |
第一个字节范围:128~191(128.0.0.0 - 191.255.255.255) |
C类地址:以110开头 |
第一个字节范围:192~223(192.0.0.0 - 223.255.255.255) |
D类地址:以1110开头 |
多播地址 |
E类地址:以1111开头 |
保留 |
10.0.0.0—10.255.255.255, 172.16.0.0—172.31.255.255, 192.168.0.0—192.168.255.255。(Internet上保留地址用于内部) |
1.2 子网和超网(三级IP地址)
子网掩码:实现对子网的数据发送。 子网掩码和IP地址进行&运算确定子网号。 路由表的包含必需数据项: 目的IP地址, 子网掩码, 下一跳地址。 CIDR地址块 斜线记法 |
2.物理设备
路由器: Router是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过 的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如网际协议。 路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。(转发分组) |
包含:路由选择部分和分组转发部分 |
路由器与交换器的差别,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。 |
层协议
一句话就是 把MAC地址变为 IP地址。实现网络的拓扑。
RARP协议: |
逆地址解析协议,与ARP相反主要的差别是 RARP请求或 应答的帧类型代码为 0 x 8 0 3 5,而且RARP请求的操作代码为 3,应答操作代码为 4。 对应于ARP,ARP请求以广播方式传送,而RARP应答一般是单播 ( unicast )传送的。 |
IP网际协议 |
IP是TCP / IP协议族中最为核心的协议。所有的 TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输, 不可靠( unreliable)的意思是它不能保证 I P数据报能成功地到达目的地。 无连接( connection less)这个术语的意思是 I P并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。 |
IP数据报由首部 和数据 两部分组成。首部由固定部分和可选部分 组成。首部的固定部分有20字节。可选部分的长度变化范围为1——40字节。固定部分的字段:
|
Linux 相关命令:ifconfig(-a) 和 netstat (-i, -n) |
ICMP协议 |
ICMP经常被认为是 I P层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被 I P层或更高层协议( TCP或UDP)使用。一些 I C M P报文把差错报文返回给用户进程, 为了更有效的转发数据包和提高交付成功的机会。 有两种: 差错报告报文 询问报文 |
ICMP的应用:分组间探测PING(packet InterNet Groper) 没用通过运输层TCP or UDP 重要的事说三遍:没用通过运输层,没用通过运输层,没用通过运输层TCP or UDP |
IGMP(Internet 组管理协议)【了解】: IGMP协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。IGMP协议共有三个版本,即IGMPv1、v2 和v3。 |
I P路由选择主要完成以下这些功能(动态):
1) 搜索路由表,寻找能与目的 IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。
2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。
3) 搜索路由表,寻找标为“默认( d e f a u l t)”的表目。如果找到,则把报文发送给该表目
指定的下一站路由器。
如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。
完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。
路由选择协议:
路由信息协议RIP(内部网关协议): |
RIP是一种分布式的基于距离向量的路由选择协议 ,使用UDP传输端口为(520) 优点:实现简单,开销较少 缺点:换消息传的慢 总结:仅相邻路由器中间交换信息,按照固定时间交换路由信息(每个30s)好消息传的快,坏消息传的慢适用与规模较小的网络。 |
RIP协议每个路由器都维护一个距离(跳数小于16当 等于16时表示不可达)向量表。因此不能从路由器中获取跳数为0 或者大于15跳数也就是在路由表不会出现。 |
、
开放最短路径优先OSPF协议: |
OSPF是分布式链路状态协议 采用的IP数据包传输 优点:支持多播,子网,流量平衡(管理员指派不同的代价),收敛更快,多路间负载平衡 采用SPF(最短路径算法) PS: 采用30min刷新数据库链路状态。 |
OSPF在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主 动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在 自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。采用洪泛法(FLOODING)生成一个全网拓扑结构图。 |
边界网关协议BGP: |
BGP 有不同的AS ,每一个AS有一个BGP发言人,通过共享网络联系在一起 |
BGP与RIP和OSPF的不同之处在于 BGP使用TCP作为其传输层协议(端口179)。两个运行BGP的系统之间建立一条 TCP连接,然后交换整个 BGP路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。 BGP是一个路径向量协议,但是与(通告到目的地址跳数的)RIP不同的是BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议的问题。采用16 bit 数字表示自治系统标识。 BGP 通过定期发送keepalive报文给其邻站来检测 TCP连接对端的链路或主机失败。两报 文之间的时间间隔建议值为 3 0秒。应用层的 keepalive报文与TCP的keepalive选项是独立的。 |
传输层
1.TCP
传输控制协议TCP |
TCP是面向连接的运输层协议 TCP是点对点(也就是直接支持多播和广播) TCP是提供可靠的交付服务。 TCP提供全双工通信 TCP面向字节流 Socket = {IP+:+port} TCP连接 = {socket1,socket2} |
数据包格式 |
|
一个TCP报文段分为首部和数据两部分。首部由固定部分和选项部分组成,固定部分是20字节。TCP首部的最大长度为60。首部固定部分字段:
|
TCP可靠传输: TCP的滑动窗口以字节为单位,实现了TCP的流量控制。
发送端是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),在底层通讯中这些数据可能被拆成很多数据包来发送,但是一个数据包有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议。 |
TCP拥塞拥塞控制: 所谓拥塞控制就是防止过多数据注入到网络中。 几种拥塞控制的方法: 1)慢开始: 由小到达主键增加发送窗口(cwnd),每经过一次传输轮次,cwnd加倍。 2)拥塞避免 让cwnd缓慢增大,每经过RTT cwnd++而不是cwnd×=cwnd 从而实现缓慢增长。 3)快重传 当发送方只要一连收到三个重复确认号则重新传报文段。 4)快恢复 当出现快重传的时候就执行惩罚减少的算法,把卖开始的门限ssthresh /=2 后执行拥塞避免算法实现窗口的缓慢线性增大。 |
TCP三次握手建立链接 和 TCP四次握手关闭链接
|
三次握手: 第一次握手:客户端发送syn包(syn=J)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=J+1),同时自己也发送一个SYN包(syn=K),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=K+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。
四次挥手 与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。 第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据(TCP处于半连接状态)。 第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。 第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。 第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。 |
TCP状态图
|
状态介绍: CLOSED: 表示初始状态。 LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。 SYN_RCVD: 这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本 上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态 时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。 SYN_SENT: 这个状态与SYN_RCVD遥想呼应,当客户端SOCKET执行CONNECT连接时它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状 态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。 ESTABLISHED:这个容易理解了,表示连接已经建立了。 FIN_WAIT_1: 这个状态要好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别 是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即 进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。 FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。 TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带 FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。 CLOSING: 这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的 ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时 发送FIN报 文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。 CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对 方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以 close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。 LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。 |
PS:2MSL等待状态(TIME_WAIT状态) TIME_WAIT状态的存在有两个理由: (1)让4次握手关闭流程更加可靠;4次握手的最 后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN 过来。若主动关闭方能够保持一个2MSL的TIME_WAIT状态,则有更大的机会让丢失的ACK 被再次发送出去。 (2)防止lost duplicate对后续新建正常链接的传输造成破坏,这种 2MSL等待的另一个结果是这个 TCP连接在 2 MSL等待期间,定义这个连接的插口(客户的 IP地址和端口号,服务器的 IP地址和端口号)不能再被使用。这个连接只能在 2 MSL结束后才能再被使用,特别是在服务器中,如果但对于被动打开方服务器,一般是server,就悲剧了,因为server一般是熟知端口。比如http,一般端口是80,不可能允许这个服务在2MSL内不能起来。解决方案是给服务器的socket设置SO_REUSEADDR选项,这样的话就算熟知端口处于TIME_WAIT状态,在这个端口上依旧可以将服务启动。 相关拓展: 该状态为什么设计在主动关闭这一方: (1)发最后ack的是主动关闭一方 (2)只要有一方保持TIME_WAIT状态,就能起到避免incarnation connection在2MSL内 的重新建立,不需要两方都有。 关于泛洪攻击。。。。。。
|
2.UDP
用户数据报UDP协议 |
UDP 是无连接的。 UDP是尽最大努力交付。 UDP是面向报文的。 UDP没有拥塞控制 UDP支持一对一 一对多 多对多的交互通信 UDP的首部开销小 |
|
U D P检验和覆盖U D P首部和U D P数据。回想 I P首部的检验和,它只覆盖 I P的首部— 并不覆盖I P数据报中的任何数据。U D P和T C P在首部中都有覆盖它们首部和数据的检验和。 U D P的检验和是可选的,而 T C P的检验和是必需的 |
PS: TCP对应的协议和UDP对应的协议
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。 (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。 (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。 (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。 (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。 UDP对应的协议: (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。 (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。 (3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。 |
PS:多播和广播的区别
广播: 主机之间一对所有的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。 广播的优点: 1)网络设备简单,维护简单,布网成本低廉 2)由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。
广播的缺点: 1)无法针对每个客户的要求和时间及时提供个性化服务。 2)网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说无法向众多客户提供更多样化、更加个性化的服务。 3)广播禁止允许在Internet宽带网上传输。 多播又叫 组播: 主机之间一对一组的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。这样既能一次将数据传输给多个有需要(加入组)的主机,又能保证不影响其他不需要(未加入组)的主机的其他通讯。 组播的优点: 1)需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。 2)由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个组播,所以其提供的服务可以非常丰富。 3)此协议和单播协议一样允许在Internet宽带网上传输。
组播的缺点: 1)与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。 2)现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。
|
应用层:
相关协议:
1、远程登录协议(Telnet)
2、文件传输协议(FTP)
3、超文本传输协议(HTTP)
HTTP协议由两部分程序实现:一个客户机程序和一个服务器程序,它们运行在不同的端系统中,通过交换HTTP报文运行会话。HTTP定义了Web客户机是如何向Web服务器请求Web页面,以及服务器如何将Web页面传送给客户机的。 HTTP使用TCP作为它的支撑运输协议。HTTP客户机发起一个与服务器的TCP连接,一旦连接建立,浏览器(客户机)和服务器进程就可以通过套接字接口访问TCP。至于TCP是什么,在后面的文章中,会详细介绍,这里读者只需要知道,TCP是面向连接的,提供可靠的数据传输服务,可以无差错、按顺序地交付要发送的数据。即使用TCP作为其支撑的HTTP协议不用担心数据丢失,也不用担心TCP是如何从网络的数据丢失和乱序故障中恢复的,因为那是TCP以及协议栈底层协议的工作。 HTTP是一个无状态协议,所以服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。举个例子来说,就是假如某个特定的客户机在短短几秒内两次请求同一个对象,服务器并不会因为刚刚为该用户提供了该对象而不做出反应,而是重新发送该对象,就好像服务器已经完全忘记了之前所做的事一样。
|
持久化链接和非持久化链接 当客户机/服务器的交互运行于TCP协议上时,应用程序的每个请求/响应对是经一个单独的TCP连接,则该应用程序使用非持久连接,而当应用程序的每个请求/响应对是经相同的TCP连接发送,则该应用程序使用持久连接。 在非持久连接的情况下,服务器在发送响应后,关闭TCP连接。我们定义往返时间RTT为一个小分组从客户机到服务器再回到客户所花费的时间。所以RTT包括分组传播时延、排列时延以及分组处理时延。 |
常见的HTTP状态码和短语 200 OK:请求成功,信息包含在返回的响应报文中。 301 Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location 首部行中指定。客户机可自动用新的URL获取该对象。 400 Bad Repuest:一个通用差错代码,指示该请求不能被服务器所理解。 404 Not Found:被请求的文档不在服务器上。 505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本。 |
详细请看:http://blog.csdn.net/ljianhui/article/details/13087145 |
4、域名服务协议(DNS)
5、简单邮件传输协议(SMTP)
6、邮局协议(POP3)
版权所有 转载请注明出处:
参考资料:
TCP/IP卷(一)
linux-cmd.zh.pdf 邢文鹏
计算机网络第6版 谢希仁 等等
版权所有 转载请注明出处:
http://blog.sina.com.cn/s/blog_c0e9eba20102vo2l.html