[Open Source Software] - 인터넷, 네트워크 (OSI 7 Layer, TCP/ IP, Topology)

서현이의 개발 기록장·2022년 10월 27일
1

Open Source Programming

목록 보기
2/5
post-thumbnail
post-custom-banner

1. 인터넷 (Internet)

컴퓨터로 연결하여 TCP/IP(Transmission Control Protocol/Internet Protocol)라는 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이다.

  • Inter : ~ 사이에
  • Net : 그물

- Inter + Net = Internet (컴퓨터 사이에 형성되는 그물망)

  • Visualization of Internet routing paths

2. 컴퓨터 네트워크 (Computer Network)

노드들이 자원을 공유할 수 있게 하는 디지털 전기통신망의 하나이다.
즉, 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 말한다.

  • 서로 다른 네트워크를 연결할 때 라우터(Router) 장비가 필요

네트워크 토폴로지 (Topology)

컴퓨터 네트워크의 요소들(링크, 노드 등)을 물리적으로 연결해 놓은 것, 또는 그 연결 방식을 말한다.

네트워크 토폴로지 종류

  • 버스 토폴로지
  • 스타 토폴로지
  • 링 토폴로지
  • 트리 토폴로지
  • 메시 토폴로지(Mesh topology)
    -> 완전 메시형(Fully connected mesh topology)
    -> 부분 메시형(Partially connected mesh topology)

네트워크 토폴로지 분류

  • 물리적 토폴로지
  • 신호 토폴로지
  • 논리적 토폴로지

  • Many Different type of Topology

네트워크 계층 모델

OSI 7 계층

국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다.

Layer 1 - 물리 계층

전선, 전파, 광섬유, 동축케이블, 도파관, PSTN, 리피터, DSU, CSU, 모뎀

Layer 2 - 데이터 링크 계층

이더넷, 토큰링, PPP, HDLC, 프레임 릴레이, ISDN, ATM, 무선랜, FDDI

Layer 3 - 네트워크 계층

IP, ICMP, IGMP, X.25, CLNP, ARP, RARP, BGP, OSPF, RIP, IPX, DDP

Layer 4 - 전송 계층

TCP, UDP, RTP, SCTP, SPX, 애플토크

Layer 5 - 세션 계층

TLS, SSL, ISO 8327 / CCITT X.225, RPC, 넷바이오스, 애플토크

Layer 6 - 표현 계층

XDR, ASN.1, SMB, AFP

Layer 7 - 응용 계층

HTTP, SMTP, SNMP, FTP, 텔넷, SSH & Scp, NFS, RTSP

TCP/IP 계층

인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.

Layer 1 - 네트워크 엑세스 계층

이더넷, Wi-Fi, 토큰링, PPP, SLIP, FDDI, ATM, 프레임 릴레이, SMDS

Layer 2 - 인터넷 계층

IP (IPv4, IPv6)

Layer 3 - 전송 계층

TCP, UDP, DCCP, SCTP, IL, RUDP

Layer 4 - 응용 계층

DNS, TFTP, TLS/SSL, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, 텔넷, ECHO, 비트토렌트, RTP, PNRP, rlogin, ENRP

네트워크를 계층화 하는 이유?

네트워크 계층화 장점

  • 네트워크의 각 기능들의 독립성을 보장 가능
  • 계층별 기능 확장 및 변경에 의한 영향에 무관

-> 상위 계층을 하위 계층의 세부적인 사항으로부터 독립시킴으로써 기능 단위로 모듈화 가능

네트워크 계층화 단점

  • 하나의 데이터가 수신지에 도착하기 위해서 각 계층 간에 많은 상호작용이 필요함

-> 과다한 처리의 오버헤드와 지연시간이 증가


3. 소켓 프로그래밍

클라이언트 / 서버 모델

  • 클라이언트와 서버는 프로그램을 의미
  • 서버는 클라이언트의 연결 요청을 대기
  • 클라이언트는 서버에 요청을 하고 응답을 기다리는 호스트

서버 소켓 구현

// 소켓 생성
#include <sys/socket.h>
int socket (int domain, int type, int protocol)
// 주소 할당 (IP 주소, Port 정보)
 #include <sys/socket.h>
int bind(int sockfd, struct sockaddr *myaddr, int addrlen)
// 연결 요청 대기
#include <sys/socket.h>
int listen(int sockfd, int backlog)
// 연결 요청 수락
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, int *addrlen)

클라이언트 소켓 구현

// 소켓 생성	
#include <sys/socket.h>
int socket (int domain, int type, int protocol)
// 연결 요청
 #include <sys/socket.h>
int connect(int sockfd, struct sockaddr *server_addr, int addrlen)

4. 네트워크 관련 오픈 소스

하드웨어 TCP/ IP 칩

- 이더넷 쉴드 (W5100)

네트워크 운영체제

라우터, 스위치, 방화벽과 같은 네트워크 장치를 위한 특화된 운영체제이다.
네트워크와 네트워크 메시지를 (이를테면 패킷) 트래픽과 대기열(큐)을 제어하고, 여러 명의 사용자가 파일과 같은 네트워크 리소스에 접근할 수 있게 해 주며, 보안을 포함한 특정한 관리자 기능을 제공하는 소프트웨어이다.

- SONiC

- Open vSwitch

고속 패킷 처리 SW

- DPDK

profile
HanYang ERICA Univ. Department of Artificial Intelligence
post-custom-banner

0개의 댓글