网络不可靠,唯一可靠就是反馈

一、 数据在网络中是怎么路由的?

1.1 同局域网中

网络是未知的, 计算机a怎么把数据刚好传输到计算机b呢? 实际上a是不知道计算机b的。 它会交换机问b在哪里? 交换机不知道的时候, 它会对所有人喊话-b在吗, 有你的数据。 当所有人听到这个请求, 都很老实, 不是自己的都不去领。只有b才会回复,是我的, 这样a知道b了可以进行通信了。 而且这个过程可以缓存起来(b缓存,交换机缓存, a缓存地址), 下次a不要再问哪个是吧啦。

1.2 不同局域网中

当计算机a向不同网络中c传输数据时,它还是先向连接交换机问c在哪里, 这时候c不会在自己局域网广播了(因为我们这个局域网同一个名字-小明,其实就是网络地址一样的)。它会转给路由器。 路由器会查找它所在的网络机器。

二、 四层网络

2.1 数据链路层 机器怎么发送数据

2.2 网络层 机器怎么把数据传输到目标的机器上

2.3 传输层 应用程序怎么把数据传输到应用程序

2.4 应用层 应用程序之间的交互内容

三、tcp & udp

tcp面向连接,udp非连接的

tcp提高可靠的, 有序,重传,udp是尽可能

tcp是点对点, udp可以1对多

tcp传输是流, udp传输的是数据段

udp头比tcp小, 没有重传,实时性更高

四、三次握手&四次挥手

因为网络不可靠, 三次握手,通过反馈确认来保证来可靠。 

四次挥手, 因为tcp是双向连接, 没法知道对方是否可以释放连接了, 但是我可以知道自己是否需要再发送数据了。当我不需要发送数据时候就发送fin给对方, 自己处于wait状态。

什么时候会出现closewait 就是别人给我发送数据, 我收到了, 但是我还没有给它说我也不发送数据了。

什么时候会出现timewait呢, 就是被关闭方, 它向主动方发送了最后一条通道要断开的信息, 主动方会出现timewait状态。因为主动方之前已经说了不主动发送数据了, 所以没办法主动反馈,只好等对方再发咯。

五、网络编程模型

5.1 同步阻塞迭代模型

5.2 多进程

5.3 多线程

5.4 select/poll

5.5 epool

六、 长连接

网络不可靠, 靠的就是反馈。 

猜你喜欢

转载自blog.csdn.net/petershuang/article/details/81393532
今日推荐