美文网首页
OSI传输层中的TCP和UDP

OSI传输层中的TCP和UDP

作者: 毛茸茸的我总念成橡皮虾 | 来源:发表于2015-03-30 16:50 被阅读157次

    UDP和TCP都属于Socket协议。

    UDP的特点:

    1、每一次发送数据都需要绑定IP和端口号。相当于发送邮件,只管是否发送成功,不保证对方是否接收到数据,所以UDP是不安全的,有可能会丢失数据包。

    2、UDP:类似于HTTP,也属于短连接。

    TCP的特点:

    1、只需要一次连接,属于 长连接,只要不断开的情况可以一直使用。TCP好像打电话,双方要通话,首先,要确定对方不是开机(网络可以到达),然后要确定是不是没有信号,然后还需要对方接听(通信链接)。

    2、TCP通过3次“握手”来保证数据发送的安全性,不会丢失数据包。


    详解:

    OSI:开放系统互连参考模型:由下往上为

    物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

    其中:

    传输层:分割并重新组装上层提供的数据流,为数据流提供端到端的传输服务。

    图1

    因为,对应传输层而言,它只需要知道目标主机上的哪个服务程序来响应这个程序,而不需要知道这个服务程序是干什么的。因此,我们只需要能够抽象的表示出来这些应用程序和服务程序即可。我们使用端口号来抽象标识每个网络程序。

    传输层有两大协议,即:TCP(传输控制协议)UDP(用户数据包协议)。TCP和UDP可以接收来自多个应用程序的数据流,并用端口号标识他们,然后把他们送给Internet层处理。同时TCP和UDP接收来自Internet层的数据包,也用端口号区分他们,然后交给不同的应用程序。

    因此:在同一IP地址(同一个目标主机)上不同的端口号是两个不同的链接。IP地址和端口号用来唯一的确定网络上数据的目的地。

    TCP中的“三次握手”:

    目的:TCP是面向链接的(即端to端),在面向链接的环境中,开始传输数据之前,在两个中端之间必须先建立一个链接。建立链接的过程可以确保通信双方在发送应用程序数据包之前,都已经准备好了传送和接收数据。并且使通信双方统一了初始化序列号。

    过程:传输前,需要进行三次握手建立链接。而通信结束后,通信双方都会使用改进的三次握手来关闭链接。

    图2

    SYN:seq=X;

    1、A的TCP程序,为这个链接分配一个端口(设为9090)。

    2、同时逻辑上的将TCP连接的状态设置为:正在连接。(通过在链接状态表中添加一条记录,记录中状态为:正在连接)

    3、同时,随机生成一个初始序列号X,生成一个TCP包,将初始化序列号X设置为TCP中的序列号,发送给主机B。

    SYN:seq=Y   ACK:ack=X+1;

    1、B上TCP程序收到该数据包,查询9091端口状态,如果可以链接。

    2、同样的,在逻辑上的将TCP连接的状态设置为:正在连接

    3、同时,随机生成一个初始化序列号Y,根据接收的序列号X,生成应答号X+1,生成一个TCP包,将序列号和应答号分别设置到TCP包头中,将TCP数据包发给主机A。

    SYN:seq=X+1   ACK:ack=Y+1.

    1、A上的TCP程序接收到数据包,查询9090端口状态。

    2、根据收到的SYN:seq=Y;ACK:ack=X+1; 封装一个TCP包 SYN:seq=x+1;ACK:ack=Y+1;发送给主机B。同时,TCP程序将链接状态表中该条记录状态设置为已连接。

    3、主机B收到数据包,TCP程序将链接状态表中该条记录状态设置为已连接。

    至此,一个TCP链接建立(三次握手)完成。

    我们可以看到:

    第一:传送的都是IP数据包,其实只是将收到的数据包交给TCP程序处理。

    第二:链接状态,只是TCP程序中的一个逻辑状态。

    参见:java-mzd.iteye.com/blog/1007577

    相关文章

      网友评论

          本文标题:OSI传输层中的TCP和UDP

          本文链接:https://www.haomeiwen.com/subject/nitoxttx.html