网络四层模型结构(我们编程到底是在哪里编程?)

TCP/IP 协议

里重要的一点就是分层

应用层:

为用户提供所需要的各种协议,负责传送最终形态的数据,是直接和用户打交道,HTTP,FTP(file transfer protocol)(这两个都是属于TCP协议的),DNS(domain nane system)和SMTP(simple mail transfer protocol)也属于TCP,而DNS和TFTP(trivail(微不足道的,简单的) file transfer protocol)属于UDP

传输层:

传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。

端对端的通信功能,TCP传输控制协议(transmission control protocol)(可靠的,面向连接的服务,有流量控制和差错控制,比如邮件的接收和发送、文件传输、远程登录),UDP(user datagram protocol)用户数据报协议(无连接的,提供高效率,低可靠性的,比如语音聊天、视频通话、在线点播VOD等)

TCP 位于传输层,提供可靠的字节流服务。
所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且TCP 协议能够确认数据最终是否送达到对方。

为了准确无误地将数据送达目标处,TCP 协议采用了三次握手(three-way handshaking)策略。用TCP 协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP 的标志(flag)——SYN(synchronize)和ACK(acknowledgement)。发送端首先发送一个带SYN 标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK 标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。

网络四层模型结构(我们编程到底是在哪里编程?)_第1张图片

网络层:

网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方

主机到主机的通信,有四个主要协议,其中重要的是IP(internet protocol)网络协议:IP 协议的作用是把各种数据包传送给对方。,地址解析协议ARP(address revolution protocol),互联网组管理协议IGMP,互联网控制报文协议ICMP

IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和MAC 地址进行配对。IP 地址可变换,但MAC地址基本上不会更改。

使用ARP 协议凭借MAC 地址进行通信
IP 间的通信依赖MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC 地址来搜索下一个中转目标。这时,会采用ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的IP 地址就可以反查出对应的MAC 地址

链路层:

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)

负责电路的链接,是整个网络的物理基础,典型的协议以太网协议,ADSL (Asymmetric Digital Subscriber Line ,非对称数字用户环路)是一种新的数据传输方式。它因为上行和下行带宽不对称,因此称为非对称数字用户线环路。

举一个例子:

我们用HTTP 举例来说明,首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个Web 页面的HTTP 请求。接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP 协议),增加作为通信目的地的MAC 地址(media access control address媒体通过控制地址,也称局域网地址,MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。)后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。

网络四层模型结构(我们编程到底是在哪里编程?)_第2张图片

网络四层模型结构(我们编程到底是在哪里编程?)_第3张图片

与HTTP 关系密切的协议:IP、TCP 和DNS

在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能获悉很粗略的传输路线。这种机制称为路由选择(routing)

网络四层模型结构(我们编程到底是在哪里编程?)_第4张图片

 

网络四层模型结构(我们编程到底是在哪里编程?)_第5张图片

所以进行网络编程解决两个问题:1.在网络中如何找到一台主机或者多台主机:依靠网络层的IP解决

2.当双方连接成功之后,如何进行可靠的传输:针对传输层进行编程,传输层的主要两个协议

网络四层模型结构(我们编程到底是在哪里编程?)_第6张图片

 

TCP VS UDP

1.Tcp 面向连接,提供可靠的传输; UDP面向无连接,提供不可靠传输

2. Tcp 提供流量控制 ; UDP不提供流量控制

3. Tcp 保证传输数据顺序 ; UDP不保证传输顺序,也就是可能是乱序收包

4. TCP 面向字节流UDP 面向数据包

 

你可能感兴趣的:(java使用技巧)