您的位置:首页 > 理论基础 > 计算机网络

Linux下网络编程TCP/UDP简介

2015-10-12 20:56 681 查看
一、OSI模型七层结构

(1)物理层:传输的是二进制的比特流
    连接的物理介质(双绞线、光纤、wifi)和网络接口(网卡)

(2)链路层:传输单位是包(帧),有格式
    拆包和打包
    MAC地址:唯一标示一个网络设备(身份证号)

             工作的硬件:交换机     

(3)网络层:路由选择
    工作的硬件:路由器
    IP地址:在网络中惟一标示一台主机(地址)

(4)传输层:传输控制(TCP和UDP协议)
    端口号:标示一个网络进程。(类似PID)(人名)
 

(5)会话层:建立通信进程的逻辑名字与物理名字之间的联系,bind函数

(6)表示层:压缩和解压,加密和解密

(7)应用层:和应用程序相关,也可以没有协议。

二、TCP/IP体系结构

(1)在工程中真正使用的体系结构,是更加精简和更加高效的模型。

(2)TCP/IP与OSI参考模型的对应关系:前三后二合并 

(3)TCP/IP体系结构是四层结构:
  应用层
  传输层
  网络层
  网络接口及物理层

三、重要协议

(1)ARP : 通过IP地址获得MAC地址

(2)RARP:通过MAC地址获得IP地址

(3)MTU :最大传输单元协议,对应MTU变量。

(4)IP  :网际协议

(5)ICMP: 网络控制管理协议

(6)IGMP:网络组管理协议:实现多播和广播

(7)TCP :传输控制协议

(8)UDP :用户数据包协议

(9)DNS : 域名解析协议 网址--》IP

(10)SMTP:简单邮件传输协议

(11)SNMP:简单网络管理协议

四、socket

(1)功能:1--本地通信  2--网络通信

(2)socket 本质:一种文件,基础的打开、关闭、读写操作

(3)socket 在网络通信中是一种独立于协议的通用网络编程接口。

(4)socket分为很多种类型:最主要的三种类型
1--流式套接字(SOCK_STREAM)---TCP
2--数据报套接字(SOCK_DGRAM)--UDP
3--原始套接字(SOCK_RAW)--PING

(5)socket 在体系结构中的位置:分情况讨论

五、IP

(1)IP的作用:IP地址是Internet中主机的标识

(2)IP的两种类型:IP地址为32位(IPv4)或者128位(IPv6)

(3)IP的两种形式:
1--数字形式 
2--点分十进制的ASCII形式  192.168.4.9

(4)点分十进制的ASCII形式ip 转化为 数字形式
“1234”--> 1234     atoi

(5)
1--inet_aton()
#include <arpa/inet.h>
int inet_aton(const char *strptr,struct in_addr *addrptr);
函数功能:将strptr所指的字符串转换成32位的网络字节序二进制值
输入参数:const char *strptr :字符串:点分十进制的ASCII形式ip
      struct in_addr *addrptr :网络地址结构体

输出参数:int :0:   参数错误
                 非0:参数正确
2--inet_addr()
功能同上,返回转换后的地址。
in_addr_t inet_addr(const char *strptr);
3--inet_ntoa()
将32位网络字节序二进制地址转换成点分十进制的字符串。 
char *inet_ntoa(stuct in_addr inaddr);

六、端口号

(1) 端口号:标示一个网络进程。(类似PID)(人名)

(2) 端口号是一个16位的数字:1--65536

(3) 系统占用;    1~1023

      大软件占用: 1024-5000

      程序员能使用:5001 -- 63536

(4)网络进程标示三元组:
1-- 网络协议 TCP UDP

        2-- IP 地址

        3-- 端口号

七、字节序

(1)字节序:多字节数据储存问题。

(2)计算机里的存储器的编址都是以字节为单位

(3)小端:低低小(低字节放在低地址是小端)

          大端:低高大

(4)主机字节顺序: 大端或小端

     网络字节序 :  大端

(5)转换函数
  主机字节序到网络字节序
u_long  htonl (u_long hostlong);
u_short htons (u_short short);
  网络字节序到主机字节序

              u_long  ntohl (u_long hostlong);

u_short ntohs (u_short short);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: