Linux网络编程:Socket编程基础

一、什么是网络编程?

网络编程是进程间通信的延续。
IPC:同一台电脑上同一系统里的两个进程间通信。
网络:不同电脑上(操作系统也可能不一样)的两个进程间通信。

互联网与因特网

互联网(internet):广义词,网网相联。
因特网(Internet):专有词,全球小老百姓使用的一个互联网。

网络协议:每一种不同互联网都有其对应的一套协议。
因特网上采用的协议:TCP/IP协议

网络协议(Protocol)主要制定如下内容:

  1. 一共需要传输多少种数据包
  2. 每个数据包中的二进制位含义(这样的数据包也被称为PDU:Protocol Data Unit)
  3. 数据包的使用次序
ip地址 & 端口号 & MAC地址
  • ip地址:
    a. 点分十进制的字符串 "192.168.0.23" 4个数字取值范围 0~255
    b. 连续四字节的整型(编程所需的形式)
    c. 域名("www.sina.com.cn")
服务名.机构名.用途名.地区名
服务名:www(web服务、网页服务)、ftp、mailto
  • 端口号:
    两个字节的整型(0~65535)
    0~1023:全球通用的一些服务。例如:网页:80,文件服务:23等。
    自定义的服务端口号:1024开始。
  • MAC地址:(硬件地址 网卡地址)
    局域网范围以内如何区分不同网口(网卡)的方法
a. 点分十六进制的字符串 "AB.56.F2.23.CD.32"  4个数字取值范围 0~255
b. 连续六字节的整型(编程所需的形式)
TCP/IP协议

TCP/IP五层协议模型:

  1. 应用层:对应网络服务数据(http ftp SMTP POP3 IMAP4 DNS....)
  2. 传输层:进程间的传输(TCP UDP)
  3. 网络层:电脑间的传输(IP)
  4. 链路层:局域网范围内网口到网口的传输
  5. 物理层:用哪种传输介质以及这种传输介质如何表示二进制位
客户端 & 服务器
  • 客户端:享受服务的进程
  • 服务器:提供服务的进程
二、后续学习
应用层数据的组织
  • 应用层采用什么协议?
  • 是现成的还是自定义?
传输层的功能如何去用
  • TCP特点和使用方法
    **TCP: Transfer Control Protocol **
    面向连接的、可靠的(可靠:确保双发传输的数据能到达对方)。
    面向连接:意味着使用TCP进行传输前,需要通信双方建立好连接。
    连接建立的过程如下:(三次握手)
    1)客户端发送连接请求
    2)服务器针对这个请求给一个对应的回应
    3)客户端再回给服务器一个回应的回应
  • UDP特点和使用方法
    UDP: User Data Protocol
    面向非连接、不可靠的(不可靠的:发送方只负责将数据发出去,确无法明确对方是否收到)。
    面向非连接:意味着使用UDP进行传输前,通信双方不需建立好连接。
  • 网络编程也被称为socket编程
    能够发送和接收数据的Socket,必须具备:
    a. 本端的地址(即本端的ip地址 + 端口号)
    b. 远端的地址(即远端的ip地址 + 端口号)

你可能感兴趣的:(Linux网络编程:Socket编程基础)