计算机网络自学之路-----传输层

传输层简介

TCP三次握手

TCP四次挥手

为啥是三次握手,而是四次挥手呢?


传输层简介                                                                                                                                                

1)引入传输层的原因:

  • 消除网络的不可靠性(虽然IP协议之外又加了ICMP等协议来弥补IP的不可靠性,但还是远远不够的)
  • 向上层(应用层)屏蔽通信子网的实现细节
  • 弥补上层(应用层)提出的要求与下层(网络层等)提供的服务的差异

2)传输层的功能:

  • 传输层提供了进程级的访问能力,实际上两个主机之间的通信就是两个进程之间的通信,这种通信也叫端到端(end-to-end)的通信
  • 实现分用与复用。不同端口之间的应用(像Http是80,Telnet是23等),通过复用网络层的一条连接来进行多种进程的数据传输。
  • 流量控制与缓冲管理。当接收端与发送端的速度不匹配的时候,就会采用缓冲机制。如下图管理方式

       2013-11-23_203855

动态分配缓冲区

ACK +序号 表示,在序号之前的所有报文都已收到。

BUF + 数字。现在可用多个个buf。

 

image

上层的主机A与主机B这就代表应用层的实体,底层就是使用的网络层,中间层就是运输层。运输层与应用层之间的接口就是端口号,通过运输实体,来进行两个主机之间的通信。TSAP是传输层服务访问点的意思。NSAP就是网络层的服务访问点,网络层与运输层之间的接口应该就是IP地址~

 

3)常用端口号

应用层协议

网络应用

常用端口号

SMTP

电子邮件发送

25

POP

电子邮件接收

110

FTP

远程文件传输

20,21.(serv_u:2121)

Telnet

虚终端

23

HTTP

Web服务

80(自定义的8080)

DNS

域名解析

53

SNMP

网络管理

161,162

 

比如说远方的客户要服务程序的TSAP用什么办法呢?

  1. 预先约定,广为人知,像上面表格中的~
  2. 从名字服务器(name server)或目录服务器(directory server)获得TSAP

TCP三次握手                                                                                                                                       

非常经典的三次握手:

三次握手

访问www.google.cn,通过wireshark抓包得到:

2013-11-24_100429

从图可知,前三次是TCP握手建立连接,第四次才是HTTP协议。这也可以说明,HTTP是使用TCP可靠传输方式的。

结合上面两张图,分析下这三次握手:

1、从客户端192.168.0.105向服务端203.208.46.176发出一个建立连接的请求。标志位是:SYN,和一个发送序列号seq=0。这个SYN我理解为当接收方看到SYN的时候,就知道我是来建立连接的;这时,客户端进入等待确定状态。

2、此时服务端收到客户端的SYN;然后,服务端203.208.16.176向客户192.168.0.105返回一个建立连接的确认信息。标志位有SYN和ACK。这里ACK我理解为,我已经收到你的请求了,现在来确定一下是不是你想建立请求,所以对第一步的seq=0进行加一处理,返回确定号ack=seq+1=0+1=1;这里的就好像对客户端说,已知道你想建立请求,且可以建立。服务端也会产生一个发送序列号seq=0;此时服务端进入SYN_RECV阶段。

3、此时的客户端收到服务端发来的SYN+ACK后。然后客户端192.168.0.105向服务端203.208.46.176再进一步的确定。标志位ACK。确认号ack=seq+1=0+1=1;发送序列seq=1;

通过以上三步就可以确定连接已经建立起来了,然后就进行下一步的传输。


TCP四次挥手                                                                                                                                            

 

2013-11-24_104534

1、203.208.46.176向192.168.0.105发送断开信号。标志位:FIN,ACK;序号seq=45683;意思是,给192.168.0.105说数据传完了,我要关闭连接(此时只是不发送数据,但可接收

2、192.168.0.105回应203.208.46.17。标志位:ACK;确定号ack=seq+1=45683+1=45684;序号seq=2031;意思是:给203.208.46.17说,好的,我知道了(你的数据发完了,但我可能还有数据没发给你

3、192.168.0.105又回应203.208.46.17。标志位:FIN,ACK。意思是:同时也告知203.208.46.17我也关闭了

4、203.208.46.176向192.168.0.105。原定情况下,标志位应该是ACK,确定关闭信息。但这里出现的是RST,表示连接重置。不太懂~~


 

为啥是三次握手,而是四次挥手呢?                                                                                                            

因为在挥手的过程中,比如说,服务端要断开连接,说明服务端的数据发送完了。这不代表客户端数据发完。这时的服务端不发送数据,但是可以接收数据,是半关闭状态。等到客户端发送FIN时,才代表客户端这边数据也发送完了,这时才可以正式的断开连接。



posted on 2013-11-24 11:39  半路@出家  阅读(1072)  评论(2编辑  收藏  举报