常用Linux命令
1、ping:检测主机连接状况
2、ifconfig:显示当前有效网络接口的状态
3、netstat :显示网络状态。如显示网络连接、路由表和网络接口信息。
4、route:对内核的IP路由表进行操作
5、tcpdump:用于分析网络上的数据流
网络中的几类地址
物理地址:即MAC地址。
48位:24位OUI(组织唯一标志符),24位由厂商分配
平面地址,无结构
全球唯一
局部范围寻址
存在于数据链路层
逻辑地址:即IP地址
IP地址标识着网络一个主机的位置。每个IP地址都是由32位(或128位)组成,分成两部分:网络号、主机号。
全球唯一,寻址容易
两种表示形式:二进制(计算机内部)、点分十进制(便于记忆)
端口地址:应用程序端口号
TCP和UDP使用16位的端口号(用无符号整型表示)
为防止端口使用的混乱,将端口分为以下三类:
“众所周知”的端口:0~1023,由IANA(因特网分配数值权威机构)统一控制
注册的端口:1024~49151,这些端口虽不由IANA控制,但IANA登记这些端口的使用
动态或私有的端口:49152~65535
网络中通信双方
唯一标识网络通信的一方
(本地协议,本地IP,本地端口)
通信双方
(本地协议,本地IP,本地端口,远程协议,远程IP,远程端口)
1(本地TCP,本地IP,本地端口,远程TCP,远程IP,远程端口)
2(本地UDP,本地IP,本地端口,远程UDP,远程IP,远程端口)
3(本地TCP,本地IP,本地端口,远程UDP,远程IP,远程端口)
网络中通信双方由以下五元组唯一确定:
(协议、本地IP地址、本地端口号、远程IP地址、远程端口号)
UDP:用户数据报协议
UDP提供无连接服务
UDP缺乏可靠性支持,应用程序必须实现:确认、超时、重传、流控等
UDP面向记录服务
TCP:传输控制协议
TCP是面向连接的。
TCP通过给所发送数据的每一个段,管理一个序列号,根据序列号进行排序。
TCP提供可靠性,实现了超时重发。RTT的估算。
TCP提供流量控制和拥塞控制:通告窗口、拥塞窗口。
TCP的连接是全双工的。
TCP连接的建立
TCP连接的过程:
服务器必须准备好接受外来的连接。通过调用socket, bind, listen函数完成。称为被动打开。
客户通过调用connect进行主动打开。这引起客户TCP发送一个SYN分节,告诉服务器客户将在连接中发送的数据的初始序列号。
服务器必须确认客户的SYN,同时自己也得发送一个SYN分节。服务器以单个分节向客户发送SYN和对客户的SYN的ACK。
客户必须确认服务器的SYN。
TCP 的TIME_WAIT状态
难点:执行主动关闭的那端进入这种状态。这个端点在该状态的持续时间是2MSL(最长分节生命周期)。
存在TIME_WAIT状态有两个理由:
实现终止TCP全双工连接的可靠性(假设最后一个ack丢失的情况).
允许老的重复分节在网络中消逝.