您的位置:首页 > 理论基础 > 计算机网络

从上网流程分析计算机网络中的协议

2016-10-22 22:20 465 查看
首先,从一个用户接入互联网开始,一般都不能独占一个外网地址,需要DHCP(应用层)动态分配一个IP地址,才可以上网。

这时候用户可能想要发送一个邮件(要用应用层SMTP协议),传输一个文件(要用应用层FTP协议-传输层TCP),浏览一个网页,在浏览器中输入网址后(http协议-应用层),需要DNS服务器将域名解析为目的IP地址(应用层DNS协议-传输层UDP),有了目的IP地址之后,开始经过传输层的TCP协议,进行一个面向连接的传输。传输层的作用是进行报文的可靠性的验证、流量控制等,还有重要的一点就是它拥有端口号的概念,可以实现不同主机之间进程间的通讯。

无论传输层用的是TCP协议,还是UDP协议,网络层都通过IP协议进行一个不可靠传输,所谓不可靠就是不保证100%交付。

那么问题来了,我知道了对方的目的IP地址,如何将报文正确转发到目的地址所在的主机呢?

主机先把报文转发给默认路由器(如果没有默认路由器,就转发给随便转发一个路由器),路由器在路由表中查找有没有对应的IP地址,如果没有,再将报文转发给其他的路由器,以此类推。这里有一个问题,转发的过程并不像大家想象的那么简单,因为真正的转发是通过物理地址进行转发的,这里就设计到将IP地址转化为物理地址的过程(ARP协议-IP协议的一部分,属于网络层协议)。刚刚谈到了路由选择问题,那路由器实际上是可以通过相互学习(实际上就是发报文)来完善自己的转发表的,这里面就涉及到内部网关协议RIP

刚刚提到IP协议实际上提供了不可靠传输,但是还是做了一些差错检验的工作的,如ICMP协议。

PS:网络层还有个IGMP用于实现多播。

继续向下分析,两个路由器通过物理地址进行通讯,而信道是双工模式的,即同一时间可能有其他的路由器或者主机在发送消息,这时候,就要用到CSMA/CD碰撞监测了。

上文讲到,网络的可靠传输是通过传输层来保证的。下面主要说下TCP和UDP。

UDP:

头部8个字节

长度由进程决定

TCP:

头部20个字节

长度由TCP自己根据拥塞情况和窗口值决定

TCP链接的端点交套接字(socket)或插口

TCP与UDP相比,有点是:可靠传输、流量控制、拥塞控制

这三者从根本上都是通过控制滑动窗口实现的。

可靠传输是利用滑动窗口的确认需要,来保证可靠性

流量控制通过规定发送方的发送窗口实现流量控制

拥塞控制实际上是从整个网络层面来进行流量控制,其核心还是滑动窗口机制。

TCP的三次握手

直接上这两个图吧!



四次握手断开连接:



中间有几个注意事项:

可以参看这篇文章

http://blog.csdn.net/liufangbaishi2014/article/details/51983695
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息