【每天学一点】关于TCP/IP协议族01

  还有半年多就要毕业了,投了几个实习都没有回音,想想果然还是什么都不会。是该好好学点什么了,于是乎开个博客,每天把自己学到的知识写上来,一方面是来对今天所学的知识进行个总结,另一方面给自己一个监督吧,我也不知道能持续多久,但开始了总会有收获。
  今天第一天,我也不清楚为什么忽然想看点关于TCP/IP的一些东西,大概说到网络肯定少不了TCP/IP。
  TCP/IP通常被认为是一个四层协议系统。包括应用层,传(运)输层,网络层,链路层。如图:

图摘自:TCP/IP详解,卷1:协议_Page 4 
  摘自tcp/ip协议详解


  其中TCP和UDP是运输层协议。

  TCP向应用层提供的服务是面向连接的并且具有可靠的字节流服务。客户端和服务器在通过TCP进行交换数据前,必须建立一个TCP连接。建立一个连接需要三次握手,终止一个连接需要四次握手
  

摘自:TCP/IP详解,卷1:协议_Page 170-171

TCP通过下列方式来提供可靠性:
    1. 应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的 数据报长度将保持不变。
   2.当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
   3.当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
  
        4.TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
     5.既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此 TCP报文段的到达也可能会失序。如果必要, TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
   6.IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
   7.TCP还能提供流量控制。

 TCP数据被封装在一个IP数据报中,如图

图摘自:TCP/IP详解,卷1:协议_Page 171
IP数据报

下图为TCP首部
TCP首部

  TCP首部一般包含20字节,其中包括16位源端口号和16位目的端口号。与IP首部的源IP地址和目的IP地址共同唯一确定一个TCP连接。
  TCP首部的6个标志符通过置1来使用其功能:
  URG_紧急指针(urgent pointer)有效
  ACK_确认序号有效。
  PSH_接收方应该尽快将这个报文段交给应用层。
  RST_重建连接。
  SYN_同步序号用来发起一个连接。
  FIN_发端完成发送任务。
  
  当建立一个新连接时(三次握手):
  1.客户端向服务器发送一个SYN段(这个字段只有在满足条件报文段中至少包含一个数据字节;或者 SYN、FIN或RST被设置为1时才显示)表明想要连接的端口,以及初始序号ISN(它表示在这个报文段中的的第一个数据字节)。SYN=1
  2.服务器接收到后,发送包含服务器的初始序号SYN报文段作为应答,同时确认序号为客户ISN+1用来对客户的SYN段进行确认。SYN=1 ACK=1
  3.客户端将确认序号设置为服务器ISN+1作为返回,与服务器进行确认。ACK=1

  终端一个连接(四次挥手):
  1.请求关闭的客户端发送FIN报文段,用来关闭从客户到服务器的数据传送。FIN=1,ACK=1
  2.服务器接收到FIN段后,返回一个ACK段,确认序号为接收到的ISN+1(FIN占一个序号)。ACK=1
  3.服务器同时也会发送一个文件结束符给应用程序,程序关闭连接,导致又发送一个FIN段。FIN=1,ACK=1
  4.客户端接收到FIN段后,返回一个ACK段以ISN+1为确认序号,进行确认。ACK=1


IP协议

IP的不可靠:它不能保证IP数据报能成功地到达目的地。IP仅提供最好 的传输服务。
IP的无连接:IP并不维护任何关于后续数据报的状态信息。 每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。

IP的数据报结构:

图摘自:TCP/IP详解,卷1:协议_Page 24

IP数据报

  TTL生存时间字段设置了数据报可以经过的最多路由器数。它的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器, 它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值