【网络知识】| 作者 / Edison Zhou
这是EdisonTalk的第291篇原创内容
作为一个专业的IT技术人,一个Web应用开发者,不了解网络基础和协议,怎么能行?本文是我2016年阅读《图解TCP/IP》一书的读书笔记下半部分。
上半部分:点此阅读
1TCP与UDP
TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)
传输层的作用
TCP:面向连接的、可靠的流协议,提供可靠的通信传输。
所谓流,就是指不间断的数据结构,你可以把它想象成排水管道中的水流。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。
UDP:面向无连接的,具有不可靠性的数据报协议。(让广播和细节控制交给应用的通信传输)
TCP用于在传输层有必要实现可靠传输的情况,由于它是面向连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输。而UDP则主要用于那些对高速传输和实时性有较高要求的通信或广播通信。
因此,TCP和UDP应该根据应用目的按需使用。另外,在日常使用TCP或UDP时,通常会用到操作系统提供的类库,这种类库一般被称为API,对于TCP或UDP来说会广泛使用到套接字(Socket)的API。应用程序使用套接字时,可以设置对端的IP地址、端口号,并实现数据的发送与接收。
端口号
MAC地址和IP地址分别用来识别同一链路中不同的计算机以及TCP/IP网络中互连的主机和路由器。在传输层,则使用端口号来识别同一台计算机中进行通信的不同应用程序。
一般知名端口号在0~1023之间,而我们经常使用的自定义/动态分配的端口号则一般在49152~65535之间。
UDP
UDP(User Datagram Protocol)不提供复杂的控制机制,利用IP提供面向无连接的通信服务。因此,它不会负责:流量控制、丢包重发等。
UDP广泛应用于:
1、包量较少的通信(DNS、SNMP等)
2、视频、音频等多媒体通信(即时通信)
3、限定于LAN等特定网络中的应用通信
4、广播通信(广播、多播)
TCP
TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
为了通过IP数据报实现可靠性传输,需要考虑很多事情,例如:数据的破坏、丢包、重复以及分片顺序混乱等问题。
TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。
使用TCP的一个连接的建立与断开,正常过程下至少需要来回发送7个包才能完成,也就是我们常常听到的三次握手,两次挥手。
2路由协议
在互联网世界中,夹杂着复杂的局域网和广域网,然后,再复杂的网络结构中,也需要通过合理的路由将数据发送到目标主机。而决定这个路由的,正是路由控制模块。
静态路由和动态路由
静态路由:事先设置好路由器和主机中并将路由信息固定的一种方法;
eg.有100个IP网的时候,就需要手动设置近100个路由信息。并且,每增加一个新的网络,就需要将这个新追加的网络信息设置在所有的路由器上。因此,管理负担很大。此外,一旦某个路由器发生故障,基本上无法自动绕过发生故障的节点,必须手工设置后才能恢复。
动态路由:让路由协议在运行过程中自动地设置路由控制信息的一种方法;
eg.如果有一个新的网络追加到原有网络中,只要在新增加网络的路由器上进行一个动态路由的设置即可。此外,网络上一旦发生故障,路由器的设置也会自动重置。
动态路由会给相邻路由器发送自己已知的网络连接信息,而这些信息又像接力一样依次传递给其他路由器,直到整个网络都了解时,路由控制表也就制作完成了,而此时也就可以正确转发IP数据包了。
路由算法
最具代表性的路由算法是:距离向量(Distance-Vector)算法和链路状态(Link-State)算法。
(1)距离向量算法
根据距离(代价)和方向决定目标网络或者目标主机位置的一种方法。
(2)链路状态算法
在了解网络整体连接状态的基础上生成路由控制表的一种方法,该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。
路由协议
(1)RIP(Routing Information Protocol)
RIP是距离向量型的一种路由协议,广泛应用于LAN。
广播路由:RIP将路由控制信息定期(30秒)向全网广播。
确定路由:RIP基于距离向量算法决定路由,距离的单位被称为“跳数”(经过的路由器的个数),RIP希望经过尽可能少的路由器将数据包发送到目标IP地址。
(2)OSPF(Open Shortest Path First)
OSPF是一种链路状态型路由协议,即使网络中有环路,也能够进行稳定的路由控制。
3应用层协议
远程登录
Telnet利用TCP的一跳连接,通过这一条连接向主机发送文字命令并在主机上执行。但是Telnet中登录时无需输入密码就可以发送,容易造成通信窃听和非法侵入的危险。
SSH是加密的远程登录系统,可以加密通信内容。即使信息被窃听也无法破解所发送的密码、具体命令以及命令返回结果是什么。
文件传输
FTP是在两个计算机之间进行文件传输时使用的协议,它使用两条TCP连接:一条用于控制,一条则用于数据的传输。
(1)FTP控制使用的连接使用的是TCP21号端口(SFTP用的是22号端口)
(2)FTP用于数据传输的TCP连接通常使用20号端口
电子邮件
SMTP(Simple Mail Transfer Protocol)提供电子邮件服务协议,而一般接收端会使用POP3(Post Office Protocol)协议。
(1)SMTP是发送电子邮件的协议,它使用TCP的25号端口。它在建立一个TCP连接以后,便在这个连接上进行控制和应答以及数据的发送。
(2)POP是接收电子邮件的协议,它和SMTP一样,也是在客户端与服务端之间建立一个TCP连接完成相应操作。
WWW
HTTP(Hyper Text Transfer Protocol)默认使用TCP的80端口,首先是客户端向服务器的80端口建立一个TCP连接,然后在这个TCP连接上进行请求和应答以及数据报文的发送。
网络管理
SNMP(Simple Network Management Protocol)常用于TCP/IP的网络管理。利用SNMP可以对连接到网络的设备进行远程管理,例如修改设置和确认是否运行正常等等。
Ref参考资料
[日]竹下隆史,《图解TCP/IP》
上半部分传送门:点此阅读