----------------------------------------------------------------------------
TCP、UDP、SCTP的一些概念:
UDP: UDP是一个简单、不可靠、无连接的传输层协议。应用进程往UDP套接字写入一个消息,
该消息随后被封装到一个UDP数据报,UDP数据报又被封装到一个IP数据报,最终被送
到目的地。每个UDP数据报都有一个长度。如果一个数据报成功地到达目的地,那么该
数据报的长度也一并随数据报发送到接收端的应用进程,这点异于TCP,因为TCP是一个
字节流协议,没有任何记录边界。
TCP: TCP是一个复杂、可靠、面向连接的传输层协议。
可靠性: 当TCP向一端发送数据时,它要求对端返回一个确认。(确认)
TCP含有用于动态估算客户和服务器之间的往返算法(RTT)。(RTT算法)
TCP给发送的每个字节关联一个序列号来对发送的数据排序。(序列号)
确认、RTT算法、序列号、超时、重传机制。
流量控制:通过通告窗口来实现。
全双工:数据收发同步。UDP也可以是全双工的。
SCTP:
端口号:当一个客户想要跟一个服务器通信时,他必须通过端口号来标识这个服务器。我们
通常所说的IP,就是我们要访问的服务器的主机(计算机),端口号就帮助我们在
这个主机里面找到我们要访问的服务进程(因为在一个主机里面有许多服务进程)。
像我们众所周知的端口号21是分配给FTP(TCP/IP)服务器的,69是分配给TFTP(UDP)
80是分配给著名的WEB服务器的。
端口号的分类:
1、众所周知的端口号0~1023,也是UNIX系统保留端口,启动时需要root权限。
2、已登记的端口 1024~49151
3、动态或私用端口 49152~65535
套接字对: 一个TCP的套接字对是一个定义该连接的两个端点的四元组:本地IP地址、本地TCP
端口号、外地IP地址、外地TCP端口号。套接字对唯一标识一个网络上的的每个TCP连接。
标识每个端点的两个值(IP地址和端口号)通常称为一个套接字。
在对客户套接字进行时,外部IP跟外部TCP端口需要客户具体指定,本地IP一般就是
客户所在主机的IP,本地端口号一般在客户连接服务器时由内核分配一个临时端口。
在对服务器套接字编程时,服务器需要指定本地IP(即服务进程允许本地的哪个网络
接口来接受客户的连接),也可指定为INADDR_ANY(即本地主机的任何一个IP都可以)
和本地端口号(即服务进程),外地IP跟外地端口在监听套接字中可以表示成 (* :*),
* 表示通配符。当客户连接上服务器时外地IP跟外地端口号(客户)就会买上写入服务
进程的已连接套接字中。
缓冲区大小及限制:现在理解得不少很好,以后再补上。O(∩_∩)O~
TCP连接的分组变换图:
TCP状态转换图:
阅读(3058) | 评论(0) | 转发(1) |