计算机网络
什么是ISO 七层模型和 TCP/IP 四层模型?
OSI模型:七层模型,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
简化合并为四层模型:应用层、传输层、网络层、网络接口层(各层之间的模型、协议统称为:TCP/IP协议簇)
TCP/IP模型合并了OSI模型的应用层、表示层和会话层,将OSI模型的数据链路层和物理层合并为网络访问层
各层模型对应TCP/IP协议栈中的协议以及各层协议之间的关系:
- DNS协议是建立在TCP和UDP协议的基础上
- FTP、HTTP、TELNET协议建立在TCP协议的基础上
- NTP、TFTP、SNMP建立在UDP协议的基础上
- TCP、UDP协议又建立在IP协议的基础上
ping 可以说是ICMP的最著名的应用,ICMP和IP一样,是网络层的协议
常见互联网协议
layer | protocols |
---|---|
应用层 | BGP、DHCP、DNS、FTP、HTTP、HTTPS、IMAP、LDAP、MGCP、MQTT、NNTP、NTP、POP、ONC/RPC、RTP、RTSP、SIP、SMTP、SNMP、SSH、Telnet、XMPP |
传输层 | TCP、UDP、TLS/SSL、DCCP、SCTP、RSVP |
网络层 | IP (IPv4、IPv6)、ICMP、ICMPv6、ECN、IGMP、OSPF、IPsec、RIP |
链接层 | ARP、NDP、Tunnels L2TP、PPP、MAC (Ethernet|DSL|ISDN|FDDI) |
应用层协议常用端口
TCP/IP
TCP/IP 与 HTTP 有什么关系?
- TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
- HTTP是应用层协议,主要解决如何包装数据。
- “IP”代表网际协议,TCP 和 UDP 使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
TCP协议与UDP协议的区别?
- TCP 与 UDP都属于传输层协议。
|TCP(Transmission Control Protocol,传输控制协议) | 面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。一个TCP连接必须有三次握手、四次挥手。 |
|–|--|
|UDP(User Data Protocol,用户数据报协议) | 非连接的协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上 | - UDP首部
- TCP首部
- 序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100字节,那么下一个报文段的序号应为 401。
- 确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
- 数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上是首部的长度。
- 确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把ACK 置 1。
- 同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。
- 终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。
- 窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。
UDP 协议中的长度和校验码可以被省略么?为什么?
- 除了 IP 协议还有其他的协议可以传输 UDP 包[1]
- UDP 的内容是自包含的,TCP 一般都是都是数据流的一部分[2]
- 把长度作为校验和的一部分, 用来进行差错校验