1、OSI(Open System InterConnection),开放式系统互联,分为7层,TCP/IP分为4层:数据链路层,网络层,传输层,应用层。
2、网络链路层的地址是MAC地址,网络层的地址是IP地址,传输层的地址是Port
3、每一层上都有啥?
网络层:IP,ARP,ICMP
传输层:TCP,UDP
应用层:HTTP,FTP,SMTP,DNS
4、ARP(Address Resolution Protocol):将目标IP地址转化为MAC地址
5、ICMP(Internet Control Message Protocol):确认网络是否正常。ping和tracert都是由ICMP实现的。tracert的原理:X在网络上找Y,对外发个消息,指明消息的接受者为Y,当A接收到消息时,返回消息给X,告诉X自己不是Y,把跳数(中间经过了几个人)加1,并且把消息对外发送,直到找到Y。
6、DNS(Domain Name System):把域名转化为IP地址。
7、对于TCP,如果每发一个消息,都要等到反馈,再发下一个,效率太低。解决办法是,发一个消息后,不必等到反馈,就发下一个消息,但是需要标记前一个消息还没有得到反馈。这就是滑动窗口协议。连续发的消息个数收到一定约束,如果发了N个消息后,还没收到第一个消息的反馈,需要等待第一个消息的反馈,不能再继续发了。
8、对于TCP,如果一连接好,就马上发送大量消息,可能会导致阻塞。解决办法是,采用试探性的策略,先发1个试试,没问题,再发2个试试,还没问题,再发4个试试。采用指数级向上加,直到达到阈值。这就是慢启动算法,慢启动算法并不慢,只不过是启动的时候慢,很快速度就上来了。
9、对于TCP,通信双方经常发送确认报文,单独回一个确认,效率太低。可以在给对方发数据的时候,顺便带上确认报文,这样就可以减少发送消息的个数,这就是捎带技术。
10、TCP为什么要进行三次握手?
TCP是面向连接的协议,是靠谱的协议。如何保证靠谱呢?要保证双方确实可以沟通的。三次握手做了下面的事情,说明双方可以沟通。
①A问B一个问题;②B回答A的问题,同时问A一个问题,③A回答B的问题。