(一)集线器组网web
集线器:(Hub)是指将多条以太网双绞线或光纤集合链接在同一段物理介质下的设备。发生在物理层。编程
集线器工做的时候,若是局域网中的一台电脑要发送消息,则局域网内的全部电脑均可以接收到这个消息,安全性较差,并且每一次只能有一个发送,只有这个发送完毕其余电脑才能再发送,这称为半双工模式。安全
详细通讯过程是这种:假如计算机1要将一条信息发送给计算机8。当计算机1的网卡将信息经过双绞线送到集线器上时,集线器并不会直接将信息送给计算机8,它会将信息进行“广播”--将信息同一时候发送给8个port,当8个port上的计算机接收到这条广播信息时,会对信息进行检查,假设发现该信息是发给本身的,则接收,不然不予理睬。因为该信息是计算机1发给计算机8的,所以终于计算机8会接收该信息,而其余7台电脑看完信息后,会因为信息不是本身的而不接收该信息。服务器
由于集线器在一个时钟周期中仅仅能传输一组信息。假设一台集线器链接的机器数目较多,并且多台机器经常需要同一时候通讯时,将致使集线器的工做效率很是差,如发生信息阻塞、碰撞等。 网络
(二)交换机组网socket
交换机:(Switcher)交换机也叫交换式集线器。它经过对信息进行又一次生成,并通过内部处理后转发至指定port,具有本身主动寻址能力和交换做用,由于交换机依据所传递信息包的目的地址。将每一信息包独立地从源port送至目的port。避免了和其它port发生碰撞。广义的交换机就是一种在通讯系统中完毕信息交换功能的设备。 tcp
详细通讯过程是:学习
集线器是采用共享工做模式的表明,假设把集线器比做一个邮递员,那么这个邮递员是个不认识字的“傻瓜”--要他去送信,他不知道直接依据信件上的地址将信件送给收信人。仅仅会拿着信分发给所有的人,而后让接收的人依据地址信息来推断是否是本身的! 而交换机则是一个“聪明”的邮递员--交换机处理port会查找内存中的地址对比表以肯定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪一个port上,而后迅速将数据包传送到目的port。spa
若是PC不知目标IP所对应的的MAC,那么能够看出,pc会先发送arp广播,获得对方的MAC而后,在进行数据的传送,交换机会“学习”新的地址,并把它加入入内部地址表中。blog
可见,交换机在收到某个网卡发过来的“信件”时,会依据上面的地址信息,以及本身掌握的“常住居民户口簿”高速将信件送到收信人的手中。万一收信人的地址不在“户口簿”上,交换机才会像集线器同样将信分发给所有的人,而后从中找到收信人。而找到收信人以后。交换机会立马将这我的的信息登记到“户口簿”上,这样之后再为该客户服务时。就可以迅速将信件送达了。
当交换机上的两个port在通讯时,由于它们之间的通道是相对独立的,所以它们可以实现全双工通讯
(三)路由器组网
路由器(Router)又称网关设备(Gateway)是用于链接多个逻辑上分开的网络。所谓逻辑网络是表明一个单独的网络或者一个子网。当数据从一个子网传输到另外一个子网时,可经过路由器的路由功能来完成。
咱们经过pc+交换机+路由器三者即组成一个可在不一样网络号下进行通讯的网络:
(四)交换机,路由器,服务器组网
这个组网里面,左边为两台pc器,用做client;中间以交换机和路由器相连;右边是两台服务器,一台为web服务器,一台为DNS服务器。
下面为其ip配置:
假设咱们访问www.baidu.com,其中的流程即为下图:
(五)tcp三次握手
TCP/IP协议中,TCP协议提供可靠的链接服务,采用三次握手创建一个链接,以下图所示。
(1)第一次握手:创建链接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时本身也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
确认号:其数值等于发送方的发送序号 +1(即接收方指望接收的下一个序列号)。
(六)tcp四次挥手
关闭链接:
因为TCP链接是全双工的,所以每一个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的链接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP链接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另外一方执行被动关闭。
TCP的链接的拆除须要发送四个包,所以称为四次挥手(four-way handshake)。客户端或服务器都可主动发起挥手动做,在socket编程中,任何一方执行close()操做便可产生挥手操做。
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN同样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的链接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。
TCP采用四次挥手关闭链接如图2所示。