【網絡編程入門】什麼是 IP、端口、TCP、Socket?

ZSYL 2021-11-25 17:47:54
ip 端口 tcp socket

IP 地址的介紹

學習目標

  • 能够說出IP地址的作用

1. IP 地址的概念

IP 地址就是 標識網絡中設備的一個地址,好比現實生活中的家庭地址。

網絡中的設備效果圖:

在這裏插入圖片描述

2. IP 地址的錶現形式

在這裏插入圖片描述

說 明:

  • IP 地址分為兩類: IPv4IPv6

  • IPv4 是目前使用的ip地址

  • IPv6 是未來使用的ip地址

  • IPv4 是由點分十進制組成

  • IPv6 是由冒號十六進制組成

IP 地址的作用

IP 地址的作用是 標識網絡中唯一的一臺設備的,也就是說通過IP地址能够找到網絡中某臺設備。

IP 地址作用效果圖:

在這裏插入圖片描述

3. 查看 IP 地址

  • Linux 和 mac OS 使用 ifconfig 這個命令
  • Windows 使用 ipconfig 這個命令

說明:

ifconfigipconfig 都是查看網卡信息的,網卡信息中包括這個設備對應的IP地址

在這裏插入圖片描述

說明:

  • 192.168.1.107是設備在網絡中的IP地址
  • 127.0.0.1錶示本機地址,提示:如果和自己的電腦通信就可以使用該地址。
  • 127.0.0.1該地址對應的域名是 localhost域名是 ip 地址的別名,通過域名能解析出一個對應的ip地址。

4. 檢查網絡是否正常

  • 檢查網絡是否正常使用 ping 命令

檢查網絡是否正常效果圖

在這裏插入圖片描述

說 明:

  • ping www.baidu.com 檢查是否能上公網
  • ping 當前局域網的ip地址 檢查是否在同一個局域網內
  • ping 127.0.0.1 檢查本地網卡是否正常

5. 小結

  • IP 地址的作用是標識網絡中唯一的一臺設備的
  • IP 地址的錶現形式分為: IPv4 和 IPv6
  • 查看網卡信息:ifconfig
  • 檢查網絡: ping

端口和端口號的介紹

學習目標

  • 能够說出端口和端口號的作用

1. 問題思考

不同電腦上的飛秋之間進行數據通信,它是如何保證把數據給飛秋而不是給其它軟件呢?

其實,每運行一個網絡程序都會有一個端口,想要給對應的程序發送數據,找到對應的端口即可。

端口效果圖:

在這裏插入圖片描述

2. 什麼是端口

端口是傳輸數據的通道,好比教室的門, 是數據傳輸必經之路

那麼如何准確的找到對應的端口呢?

其實,每一個端口都會有一個對應的端口號,好比每個教室的門都有一個門牌號,想要找到端口通過端口號即可。

端口號效果圖:

在這裏插入圖片描述

3. 什麼端口號

操作系統為了統一管理這麼多端口, 就對端口進行了編號,這就是端口號, 端 口號其實就是一個數字,好比我們現實生活中的門牌號,

端口號有65536個。

那麼最終飛秋之間進行數據通信的流程是這樣的, 通 過ip地址找到對應的設備,通過端口號找到對應的端口,然後通過端口把數據傳輸給應用程序

最終通信流程效果圖:

在這裏插入圖片描述

4. 端口和端口號的關系

端口號可以標識唯一的一個端口。

5. 端口號的分類

  • 知名端口號
  • 動態端口號

知名端口號:

知名端口號是指 眾所周知的端口號,範圍從0到1023。

  • 這些端口號一般固定分配給一些服務,比如21端口分配給FTP(文件傳輸協議)服務,25端口分配給SMTP(簡單郵件傳輸協議)服務,80端口分配給HTTP服務。

動態端口號:

一般程序員 開發應用程序使用端口號稱為動態端口號, 範圍是從1024到65535。

  • 如果程序員開發的程序沒有設置端口號,操作系統會在動態端口號這個範圍內隨機生成一個給開發的應用程序使用。
  • 當運行一個程序默認會有一個端口號,當這個程序退出時,所占用的這個端口號就會被釋放。

6. 小結

  • 端口的作用就是 給運行的應用程序提供傳輸數據的通道
  • 端口號的作用是 用來區分和管理不同端口的,通過端口號能找到唯一個的一個端口
  • 端口號可以分為兩類: 知名端口號動態端口號
    • 知名端口號的範圍是0到1023
    • 動態端口號的範圍是1024到65535

TCP 的介紹

學習目標

  • 能够說出TCP 的特點

1. 網絡應用程序之間的通信流程

之前我們學習了 IP 地址和端口號,通過 IP 地址能够找到對應的設備,然後再通過端口號找到對應的端口,再通過端口把數據傳輸給應用程序, 這裏要注意,數據不能隨便發送,在發送之前還需要選擇一個對應的傳輸協議,保證程序之間按照指定的傳輸規則進行數據的通信,而這個傳輸協議就是我們今天學習的TCP。

2. TCP 的概念

TCP 的英文全拼(Transmission Control Protocol)簡稱 傳 輸控制協議,它是一種 面向連接的、可靠的、基於字節流的傳輸層通信協議

面向連接的效果圖:

在這裏插入圖片描述

TCP 通信步驟:

1. 創建連接
2. 傳輸數據
3. 關閉連接

說 明:

TCP 通信模型相當於生活中的’打電話’,在通信開始之前,一定要先建立好連接,才能發送數據,通信結束要關閉連接。

在這裏插入圖片描述

3. TCP 的特點

1. 面向連接

  • 通信雙方必須先建立好連接才能進行數據的傳輸,數據傳輸完成後,雙方必須斷開此連接,以釋放系統資源。

2. 可靠傳輸

  • TCP 采用發送應答機制
  • 超時重傳
  • 錯誤校驗
  • 流量控制和阻塞管理

4. 總結

TCP 是一個 穩 定、可靠的傳輸協議,常用於對數據進行准確無誤的傳輸,比如: 文件下載,瀏覽器上網

Socket 的介紹

學習目標

  • 能够說出 socket 的作用

1. 問題思考

到目前為止我們學習了 ip 地址和端口號還有 tcp 傳輸協議,為了保證數據的完整性和可靠性我們使用 tcp傳輸協議進行數據的傳輸,為了能够找到對應設備我們需要使用 ip 地址,為了區別某個端口的應用程序接收數據我們需要使用端口號,那麼通信數據是如何完成傳輸的呢

使用 socket 來完成。

2. socket 的概念

socket (簡稱 套接字) 是 進程之間通信一個工具,好比現實生活中的 插 座,所有的家用電器要想工作都是基於插座進行, 進程之間想要進行網絡通信需要基於這個 socket

插座效果圖:
在這裏插入圖片描述

socket 效果圖:

在這裏插入圖片描述

3. socket 的作用

負責 進程之間的網絡數據傳輸,好比數據的搬運工。

4. socket 使用場景

不誇張的說,只要跟 網絡相關的應用程序或者軟件都使用到了 socket

在這裏插入圖片描述

5. 小結

進程之間 網絡數據的傳輸可以通過 socket 來完成,socket 就是進程間網絡數據通信的工具。


加油!

感謝!

努力!

版权声明
本文为[ZSYL]所创,转载请带上原文链接,感谢
https://javamana.com/2021/11/20211125174627525t.html

  1. La distribution Linux d'Amazon est maintenant entièrement basée sur Fedora
  2. org.springframework.web.bind.MissingServletRequestParameterException
  3. Built in constraints and functions of MySQL Foundation (2)
  4. Basic operation of MySQL Foundation (I)
  5. Introduction to Java zero foundation 3: Java data types
  6. 从零开始搭建EasyDarwin环境——Linux系统开发环境搭建Golang
  7. Redis source Concise Analysis 02 - SDS String
  8. Construire l'environnement easydarwin à partir de zéro - - construire l'environnement de développement du système Linux golang
  9. javaweb代码是正确的,但是第一行代码就报错了
  10. **** | Java | 后端开挂:3行代码写出8个接口
  11. Java || 看了大二学长写的代码,我竟开始默默的模仿了。。。
  12. Java | 手把手教你实现一个抽奖系统(Java版)
  13. Java | Manuel pour vous apprendre à mettre en œuvre un système de loterie (version Java)
  14. Java | | après avoir lu le Code que j'ai écrit en deuxième année, j'ai commencé à imiter silencieusement...
  15. Java | back - end Pending: 3 - line Code write 8 Interfaces
  16. Le Code Web Java est correct, mais la première ligne de code est incorrecte
  17. Android网络编程之Http通信
  18. Android網絡編程之Http通信
  19. Http communication for Android Network Programming
  20. 数据结构实验八 领会图的两种主要储存结构和图的基本运算算法设计
  21. Hibernate数据校验简介
  22. The story of spring
  23. Il a dépensé 270 000 yuans pour soulever Xiaopeng p7 et a parcouru 3 627 km. Le propriétaire du véhicule a partagé 6 avantages et inconvénients.
  24. 阿里蚂蚁花呗团队面试题:spring+分布式+jvm+session+redis
  25. 【Java入门100例】14.字符串排序——compareTo()
  26. 【Java入门100例】13.修改文件扩展名——字符串替换
  27. Leetcode 79. Word Search [C + + / java detailed problem]
  28. Introduction à la vérification des données hibernantes
  29. Expérience de la structure des données
  30. Spring cloud gateway practice 2: more routing configuration methods
  31. Java network programming - summary overview
  32. 基于语法树的 Java 代码自动化插桩
  33. 云原生 Spring Boot 应用配置 Prometheus + Grafana 监控(保姆级)
  34. Spring cloud gateway practice 2: more routing configuration methods
  35. Jenkins file one line of code to deploy. Net program to k8s
  36. Java network programming - summary overview
  37. Cloud Native Spring Boot application configuration Prometheus + grafana Monitoring (baby - sitter)
  38. Insertion automatique de code Java basée sur l'Arbre syntaxique
  39. Le SUV phare de Xiaopeng, Xiaopeng G9, a fait ses débuts au salon de l'automobile et s'est tenu en position C dans la nouvelle force?
  40. Docker 从入门到实践系列四 - Docker 容器编排利器 Docker Compose
  41. 6年老猿带你掌握Spring Boot实现定时任务的动态增删启停
  42. disruptor笔记之六:常见场景,java教程从入门到精通pdf百度云
  43. Pourquoi InnoDB n'utilise - t - il pas un cache LRU naïf?
  44. Java Reflection (2): quelques opérations de base de reflection
  45. 6年老猿帶你掌握Spring Boot實現定時任務的動態增删啟停
  46. Les singes âgés vous permettent de maîtriser le démarrage et l'arrêt dynamiques des tâches programmées par Spring boot
  47. Docker From Beginning to Practice Series IV - docker Container chorégraphe Clean docker Composition
  48. 编写 java 程序,为家用电脑 ipv6 自动更新 goddy dns 记录(ddns)
  49. java jvm-old gc耗时几十s,导致系统告警
  50. Disruptor note 6: scénario commun, tutoriel Java de l'introduction à la maîtrise du PDF Baidu Cloud
  51. 编写Java程序启动脚本最佳实践
  52. How to get the correct Linux user's documents, music videos and other directories?
  53. Java JVM Old GC prend des dizaines de s, ce qui provoque une alarme système
  54. Écrivez un programme Java pour mettre à jour automatiquement les enregistrements DNS goddy (ddns) pour l'ordinateur domestique IPv6
  55. 編寫Java程序啟動脚本最佳實踐
  56. Meilleures pratiques pour écrire des scripts de démarrage de programmes Java
  57. Notes sur springcloud Eureka
  58. Ajout, suppression et modification simples de mybatis
  59. Java - carte mémoire de l'objet
  60. Why did docker lose to kubernetes? Docker employee readme!