Chinaunix首页 | 论坛 | 博客
  • 博客访问: 81715
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-23 20:18
个人简介

linux 嵌入式 物联网 驱动 ARM-A9

文章分类

全部博文(30)

文章存档

2016年(30)

我的朋友

分类: LINUX

2016-09-24 20:30:46

原文地址:TCP、UDP、SCTP的一些概念 作者:Mrt-l

----------------------------------------------------------------------------
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状态转换图:
 

 
 
 

 
阅读(1739) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~