ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络结构和TCP/IP协议族

2020-09-11 02:04:22  阅读:516  来源: 互联网

标签:协议 字节 IP 报文 TCP 网络结构 客户端


网络五层模型结构图:

 

 

 链路层:以太网协议

  规定数据包:帧,每一帧分为两部分:头(Head)和数据(Date);头固定22字节,数据最短46字节,最长1500字节,所以整个帧最短68字节,最长1522字节。头中包含发送方和接收方的MAC地址(各6字节)等。

  连接层只能在局域网内连接,采用广播的发送方式传递信息。

网络层:IP协议

  IP地址:32位,从0.0.0.0-255.255.255.255;前24位代表网络,后8位代表主机,同一子网络(局域网)的电脑,IP部分相同。

  规定数据包仍分为两部分:头(Head)和数据(Date);头部份包含版本、长度、IP地址等信息。头部20-60字节,数据部分最长65515字节,总长最长65535字节;因为以太网数据部分最长只有1500字节,所以如果IP数据包过长,需要分割成几个以太网数据包,分别发送。

  IP协议主要有两个作用:为每一个计算机分配IP地址,确定哪些地址在同一个子网络。

传输层:TCP\UDP

  传输层的功能就是建立“端到端”的通信,端口:即每一个使用网卡的程序的编号,是0-65535之间的一个整数。正好16位.不管是浏览网页还是在线聊天,应用程序都会随机选用一个大于1023的端口,然后与服务器相应端口联系。

  UPD:头包含发送端口和接收端口。几乎就是在数据前面加上端口号。标头只有8字节,总长度不超过65536个字节。

  TCP:可以近似地认为是有确认机制的UPD协议,每发送一个数据包都要求确认,如果有数据包遗失,发送方就能知晓并重发。TCP数据包没有长度限制,但一般不会超过IP数据包长度,以避免再次分割。

      发送的时候PCT协议为每个包编号,以便接收方按照顺序还原;第一个包编号是随机值,第二个包编号是第一个包编号+1;就是说每个包都可以知道自己的编号的和下一个包的编号,这就可以让接收方按照顺序还原啦。

 

每一个应用层(TCP/IP参考模型的最高层)协议一般都会使用到两个传输层协议之一:

运行在TCP协议上的协议:

  • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
  • HTTPS(HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
  • FTP(File Transfer Protocol,文件传输协议),用于文件传输。
  • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
  • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
  • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。

运行在UDP协议上的协议:

  • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
  • NTP(Network Time Protocol,网络时间协议),用于网络同步。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。

运行在TCP和UDP协议上:

  DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作。

 NDS协议:可以将网址转成IP地址。

 

TCP/IP 协议族

在互联网使用的各种协议中最重要和最著名的就是 TCP/IP 两个协议。现在人们经常提到的 TCP/IP 并不一定是单指 TCP 和 IP 这两个具体的协议,而往往是表示互联网所使用的整个 TCP/IP 协议族。

 TCP(传输控制协议)和IP(网际协议) 是最先定义的两个核心协议,所以才统称为TCP/IP协议族

TCP的三次握手四次挥手

当一个连接被建立或被终止时,交换的报文段只包含TCP头部,而没有数据。

三次握手的本质是确认通信双方收发数据的能力

四次挥手的目的是关闭一个连接:

因为只有在客户端和服务端都没有数据要发送的时候才能断开TCP。而客户端发出FIN报文时只能保证客户端没有数据发了,服务端还有没有数据发客户端是不知道的。而服务端收到客户端的FIN报文后只能先回复客户端一个确认报文来告诉客户端我服务端已经收到你的FIN报文了,但我服务端还有一些数据没发完,等这些数据发完了服务端才能给客户端发FIN报文(所以不能一次性将确认报文和FIN报文发给客户端,就是这里多出来了一次)。

 

 

 

为什么客户端发出第四次挥手的确认报文后要等2MSL的时间才能释放TCP连接?

这里同样是要考虑丢包的问题,如果第四次挥手的报文丢失,服务端没收到确认ack报文就会重发第三次挥手的报文,这样报文一去一回最长时间就是2MSL,所以需要等这么长时间来确认服务端确实已经收到了

如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP设有一个保活计时器,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

标签:协议,字节,IP,报文,TCP,网络结构,客户端
来源: https://www.cnblogs.com/haosk/p/13649334.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有