Java随笔-TCP/IP网络数据传输

TCP

TCP属于传输层的协议,主要是为两台主机上的应用程序提供端对端的通信。TCP提供的是可靠的数据传输服务,是面向连接的,也就是需要数据传输的双方先建立连接,等连接(三次握手)建立成功后再开始传输数据,而且传输过程中采用“带重传的肯定确认”技术来实现传输的可靠性,还会采用“滑动窗口”的方式进行流量控制,发送完后关闭连接(四次挥手)。因为可靠,所以速度要比UDP慢一些,常用于HTTP。

UDP

UDP中文称之为用户数据报协议,只管发送数据,不管对方是否在接收,能接收,是否已接收,属于不可靠传输,有时会出现丢包现象,所以需要额外进行验证。因为只管发,所以速率比较快,常用于在线视频或直播。

常见的网络应用基本上都是TCP和UDP,但并非一定要使用,可以绕过这两个传输层协议,直接使用网络层的IP,比如windows的ping命令。

请添加图片描述

MAC地址

MAC地址又叫媒体访问控制地址,也叫局域网地址,是物理地址,从硬件出生开始就已经被网络制造商写入硬件内部,与网络无关,一般终身不可变,相当于人的身份证号。每一个硬件都有自己的MAC地址,不管接入到哪里都是一样的,一台设备有很多硬件,也就有很多MAC地址,而不是一台设备只有一个。
在这里插入图片描述
上图中的物理地址就是MAC地址。MAC地址共6个字节,48位,前24位有IEEE(电气与电子工程师协会)分配,后24位由生产厂家决定。

IP 地址

IP地址全称为互联网协议地址,为互联网上每一个网络和每一个主机配置一个唯一的逻辑地址,与MAC地址不同,IP是可变的,不受硬件约束,用来识别网络中互联的主机和路由器。
IP地址分为IPv4和IPv6,从一开始使用的都是IPv4,4个字节,32位,比如:192.168.1.1,具体的编号使用根据域名来确定的。IPv4数量有限,所剩不多,所以启用了IPv6,IPv6共128位,16个字节,采用16进制表示,有3种表示方法:冒分十六进制表示法,0位压缩表示法,内嵌IPv4地址表示法。

IP与MAC之间的区别:

  • 分配方法不同,IP根据网络拓扑结构分配,MAC地址由协会和制造商分配。
  • IP只要不重复,可以随意更改,MAC固定在硬件中,一般来讲,终生不变。
  • 长度不同,IP是32位,而MAC是48位。
  • 协议层级不同,IP是网络层,而MAC属于数据链路层。
端口号

端口号分为两种:静态端口号,动态端口号。

  • 静态端口号也称为标准既定端口号,意思是每一个程序都有指定的端口号,比如HTTP等广泛使用的协议的端口号是固定的,一般分布在0 ~ 1023之间,属于知名端口号。除此之外,1024 ~ 49151之间的端口已被注册,但不是不可用,依然可用于任何通信用途。
  • 49151 ~ 65535之间的端口是操作系统按照时序分配法进行动态分配的,因为客户端应用程序可以完全不需要设置自己的端口号,但是服务器就不行,服务器还是需要监听端口号,以便让客户端访问服务器上的服务。
    请添加图片描述
TCP/IP网络传输的数据分为两部分:一部分是上一层(应用层、表示层、会话层)传递过来的数据,另一部分是协议需要使用的首部。传递的数据在发送时在原始数据上添加每一层的首部,依次往下传;接收数据时,解析每一层的首部并丢掉该首部,依次往上传。

请添加图片描述

  1. 用户A发送“你好”,应用程序对发送数据进行处理,对数据进行编码,编码转化完成后,等通信连接建立完成后将编码后的数据发送出去。
  2. TCP根据应用指示,建立可靠连接、发送数据、断开连接。建立可靠连接并对数据进行可靠传输,需要在应用层传递进来的数据的前端添加TCP首部。
  3. IP处理其实就是解决我是谁,我将要去哪里的问题。IP数据包含原始数据和TCP包首部,然后再加上自己IP包首部。参考的路由控制表决定接收该IP包的路由或主机。
  4. 以太网的数据包含原始数据、TCP包首部、IP包首部,通过处理后会添加上以太网首部并进行发送,生成的以太网数据包通过物理层传送给接收端。
  5. 接收端的网络接口接收到以太网包后,首先判断从以太网包首部中寻找MAC地址,看是不是发送给在自己的数据,如果不是则丢掉,如果是发送给自己的数据包,则从以太网首部中确定数据类型,再往上传,进行IP首部解析。
  6. 进行IP首部解析就是从IP首部中获取IP地址,看看是不是和自己的IP匹配,如果是,则根据首部的协议继续往上传,进行TCP或UDP首部解析,如果和自己的IP地址不匹配,则借助路由控制表进行数据转发。
  7. TCP首部解析会先计算一下校验和,判断数据是否被破坏;然后检查是否按序号接收数据;最后检查端口号,通过端口号确定处理数据的应用程序。
  8. 应用程序接收数据后进行数据解析,显示相应的内容。
总的来讲,数据发送时就是在原始数据上一层一层往上包,接收数据时再一层一层往下剥。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值