复职学习日记——TCP/IP

TCP/IP

TCP/IP是因特网的通信协议。 TCP/IP 通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。

  • TCP/IP 意味着 TCP 和 IP 在一起协同工作。
  • TCP 负责应用软件(比如您的浏览器)和网络软件之间的通信。
  • IP 负责计算机之间的通信。
  • TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。
  • IP 负责将包发送至接受者。

TCP/IP 寻址

TCP/IP 使用 32 个比特或者 4 组 0 到 255 之间的数字来为计算机编址。

IP地址
  • 每个计算机必须有一个 IP 地址才能够连入因特网。
  • 每个 IP 包必须有一个地址才能够发送到另一台计算机。
32 比特 = 4 字节
  • TCP/IP 使用 32 个比特来编址。一个计算机字节是 8 比特。所以 TCP/IP 使用了 4 个字节。
  • 一个计算机字节可以包含 256 个不同的值:
    00000000、00000001、00000010、00000011、00000100、00000101、00000110、00000111、00001000 … 直到 11111111。
    所以TCP/IP 地址是介于 0 到 255 之间的 4 组数字。
IP V6
  • IPv6 是 “Internet Protocol Version 6” 的缩写,也被称作下一代互联网协议,它是由 IETF 小组(Internet 工程任务组Internet Engineering Task Force)设计的用来替代现行的 IPv4(现行的)协议的一种新的 IP 协议。
  • Internet 的主机都有一个唯一的 IP 地址,IP 地址用一个 32 位二进制的数表示一个主机号码,但 32 位地址资源有限,已经不能满足用户的需求了,因此 Internet 研究组织发布新的主机标识方法,即 IPv6。
  • 规定的标准语法建议把 IPv6 地址的 128 位(16 个字节)写成 8 个 16 位的无符号整数,每个整数用 4 个十六进制位表示,这些数之间用冒号(:)分开,例如:
    686E:8C64:FFFF:FFFF:0:1180:96A:FFFF
    冒号十六进制记法允许零压缩,即一串连续的0可以用一对冒号取代,例如:
    FF05:0:0:0:0:0:0:B3可以定成:FF05::B3
域名
  • 12 个阿拉伯数字很难记忆。使用一个名称更容易。
  • 用于 TCP/IP 地址的名字被称为域名。php.cn 就是一个域名。
  • 当你键入一个像 http://www.php.cn 这样的域名,域名会被一种 DNS 程序翻译为数字。
  • 当一个新的域名连同其 TCP/IP 地址一起注册后,全世界的 DNS 服务器都会对此信息进行更新。

常见问题

1、TCP/IP协议与Http协议的区别

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
简单来说:我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

2、TCP 的三次握手
  • 假设 A 为客户端,B 为服务器端。
  • 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。
  • A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。
  • B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
  • A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。
  • B 收到 A 的确认后,连接建立。

三次握手

3、 四次挥手
  • 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。
  • 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
  • 服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。
  • 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)
4、TCP采用四次挥手关闭连接如图所示为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。
在这里插入图片描述

5、TCP与UDP的区别。

(1)TCP:面向连接,可靠的,速度慢,效率低。

(2)UDP:无连接、不可靠、速度快、效率高。

当进程需要传输可靠的数据时应使用TCP,当进程需要高效传输数据,可以忽略可靠性时应使用UDP协议。

6、HTTP请求报文
  • 一个HTTP请求报文由请求行、请求头部、空行和请求数据4个部分组成。

  • HTTP响应由三个部分组成,分别是:状态行、消息报头、响应正文。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值