정보통신 : 기술 면접 준비6 : 프로토콜이란?/ OSI 모델 과 TCP/IP 모델
오늘은 프토토콜이 뭔지 OSI 모델 과 TCP/IP 모델은 무엇인지에 대하여 알아보자
프로토콜이란 쉽게 정보통신 사회를 살아 가는데 있어서 필요한 기기들이 정보를 주고 받기 위한 약속, 규칙을 의미한다.
좀더 상세하게 알아보자
통신 프로토콜이란?
- 네트워크를 구성하는 객체간 데이터를 주고 받기 위해 미리 약속한 전송(통신) 규약(규칙)을 의미
- 정보통신에서 통신을 통제하는 규칙들을 규정
프로토콜 기본 3대요소
기본요소
- 구문 : 데이터의 형식, 부호화(신호 방식 및 정의 포함) 등을 포함하여 객체 간 데이터의 내용을 구분 (parsing)하기 위한 문장 구조를 정의
- 의미 : 구문에 의해 분석된 데이터를 기반으로 행동(action)을 취하기 위한 방법(how)
- 타이밍(또는 순서) : 메시지의 송/수신을 위한 서로간의 시간적인 약속을 의미
주요 기능
단편화와 재결합
- Fragmentation and Reassembly
- 블록을 효율적으로 전송이 되도록 작은 단위의 블록(패킷)으로 나눔
- 수신된 작은 블록들을 다시 원래의 데이터로 재결합
캡슐화(Encapsulation)
• 데이터의 목적지 및 신뢰성 제공을 위한 헤더와 트레일러를 추가
연결 제어(Connection Control)
• 회선 접속 => 링크 확립 => 데이터 전송 => 링크 해제 => 회선 절단
오류 제어(Error Control)
• 수신된 데이터의 오류를 검출하고 재전송을 요구
동기화(Synchronisation), 순서 제어(Sequencing), 주소 지정 (Addressing), 다중화(Multiplexing), 경로 선택(Routing) 등 다양한 기능들이 있음
OSI 모델이란? (통신 규약 == 프로토콜의 이론적 표준)
프로토콜을 배우게 된다면 꼭 듣게 되는 OSI 모델이다. 표준화 정의를 위한 국제위원회에서 전 세계에서 이렇게 프로토콜을 사용 하면 좋을거 같아 라고 기준 즉 표준을 정의 한 모델이다. 약간 추상적 개념이라고 보면 된다.
좀더 자세히 알아보자
개방형 시스템 상호 연결(OSI) 모델은 다양한 통신 시스템이 표준 프로토콜을 사용하여 통신할 수 있도록 국제 표준화 기구가 만든 개념 모델입니다. OSI는 다양한 컴퓨터 시스템의 상호 통신을 가능하게 하도록 하는 표준을 평이한 영어로 제공합니다.
OSI 모델은 컴퓨터 네트워킹을 위한 보편적인 언어로 생각할 수 있습니다. 이 모델은 통신 시스템을 7개의 추상적 계층으로 나누고 각각의 계층이 다른 계층 위에 얹히는 개념에 기초합니다.
좀더 이해하고 싶다면 아래 상세내용 글을 읽고 이글을 읽어 나가길 바란다.
ISO
- 표준화 정의를 위한 국제위원회
- 다양한 분야(상품 및 서비스)에서 서로 호환되기 위한 표준을 정의
- 스위스 제네바에 본부를 둠
- CCITT: 국제 전신 전화 위원회
- (Consultative Committee for International Telephony & Telegraphy) => ISO의 전화관련 국제 자문 위원회
OSI 참조 모델 (ISO 에서 정의한)
- OSI : Open System Interconnection
- 1960년대부터 데이터통신 개념 등장
- 1970년대 독립적인 네트워크 출현
- 서로 다른 시스템간 데이터 전송이 가능한 표준의 필요성 등장
- ISO(International Organization for Standardization)에서 데이터통신에 대한 모델을 규정(1983)
- 7개의 계층으로 이루어진 모델
TCP/IP 4계층이란? (통신 규약 == 프로토콜의 실무적 표준)
즉 OSI모델에서 추상적으로 정의 한 개념과 비교되는 개념인데 실질적으로 실무에서 즉 현제 가장 많이 사용하는
프로토콜의 표준이다.
현재의 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신 규약(프로토콜)의 모음
OSI가 이론적 표준이라면 TCP/IP는 실무적 표준
TCP / IP란?
- TCP/IP : Transmission Control Protocol /Internet Protocol
- DoD(미국방성)에서 정의한 모델
- ARPANET에서 개발
- OSI 7 계층 모델과 유사
- OSI 보다 먼저 정의되고 현재 가장 많이 사용되고 있음
- 인터넷에서 사용되고 있으며 다양한 네트워크와 상호접속이 가능
계층 (아래서 상세 설명을 하겠다. 현대 사회에서 사용하는 이메일 보내기, 도메인 접속(네이버 구글 검색) 등 에 활용되는 통신 프로토콜이 내부적으로 어떻게 돌아가는지 보여준다.
전송 계층
TCP/ IP 각 계층을 좀더 살펴 보자
응용 계층 주요 서비스
전송 계층
즉 응용계층에서 약속한 프로토콜들 예를 들어 이러한 이러한 기능은 HTTP 프로토콜을 사용할거고 (약속 1)
전송 계층에서 TCP 와 UDP 프로토콜 둘중 하나 선택해서 보내줘 (약속2)
이러한 개념이 각계층마다 한 층씩 즉 약속 들이 하나씩 증가하여 송 수신 한다고 생각 하면 된다.
TCP와 UDP는 아래서 좀더 상세 설명하겠다. 여기서는 그냥 아 이렇게 상대방과 연결하는 프로토콜이 있군아 만 이해하자
인터넷 계층 (실질적 전송 담당 IP 를 통하여 )
- 송/수신 단말기의 주소들을 읽고 데이터 전송을 위한 경로(path)를 결정(routing)
- 네트워크를 통해 송/수신 단말(종단 노드) 간 데이터 전송을 담당
- 주의: 링크로 직접 연결된 인접 장치 간 데이터 전송의 담당은 링크 계층(OSI 모델)
- 종단 주소: IP Address
- 프로토콜 예: IP, ARP, RARP, ICMP, IGMP 및(BGP, OSPF, RIP 등의 라우팅 프로토콜)
- 데이터 단위: 패킷(Packet) 또는 데이터그램(Datagram)
그렇다면 위에서는 각 통신규약 즉 프로토콜 약속들이 중첩 되어 인터넷 계층에서 IP를 통해 송 수신 원하는 정보 전달및 받기를 하는 것을 알았다 그렇다면
IP 란?
쉽게 하나의 컴퓨터가 가진 주민등록 번호라고 생각하자 이 컴퓨터의 주민 등록 번호가 어떠한 구조로 이루어져 있는지 살펴보겠다 이해하기 어렵기 때문에 아아 이런게 있군아 하고 여러번 보기 바란다.
- 인터넷을 위한 프로토콜(Internet Protocol)
- 네트워크내 단말 간 통신을 위한 라우터들의 경로 설정
- 원격의 단말(장치 또는 호스트) 간의 데이터 전달을 위한 프로토콜
- IP 데이터그램이 목적지에 성공적으로 도달한다는 것을 보장하지 않음
- 전달되는 데이터그램에 대해 상태 정보 유지하지 않음
- Best-Effort 서비스
- 단일화된 가상적 통신 시스템을 제공
- 동일한 방식의 주소 체제를 갖도록 함
- 각 주소는 반드시 독립적(Unique)이어야 함
- 32비트의 IP 주소는 2진수로 표시
- 사용자는 이해하기 편리한 10진 표기 형식을 사용
- 예: 203.112.34.254
- 127.x.x.x은 로컬컴퓨터의 루프백(loopback)으로 지정되어있음.
전세계적으로 컴퓨터가 너무 많아져서 할당할 주소가 부족해졌다.
ex 주민등록증 또한 인구 증가에 따라 2000년을 기준으로 1,2 에서 3,4로 시작 하는 것처럼
이걸 해결하기 위해 IPv6가 나왔다.
- IETF(Internet Engineering Task Force)에서 IP Address 부족에 대한 해결 방안으로 만듦
- 주소의 크기가 각각 128비트(16바이트)
- 암호화(IPsec) 확장기능 제공 à 보안기능 강화
- 브로드캐스트(broadcast) 기능 제거
- 향상된 서비스 품질 지원
- 자동 주소 설정 기능 제공
- 지원 전송 방식
- 유니캐스트(Unicast)
- 애니캐스트(Anycast)
- 멀티캐스트(Multicast)
- IPv6 주소 표현
- 16비트씩 8부분으로 16진수로 표시
- 각 부분은 “:”로 구분
- 예: AAAA:A0A0:0000:0000:0000:0000:0000:BBB1
- 중간에 또는 다음의 값이 0일 경우 구분자 사이 생략도 가능
- 예: AAAA:A0A0::::::BBB1 또는 AAAA:A0A0::BBB1
위에서 일단 IP가 뭔지 알아보았다. 그렇다면 송신측과 수신측연결을 하는데 있어서
앞서 이야기한 TCP와 UDP를 알아보자
참고 자료 + 읽어보면 좋은 자
https://cocoon1787.tistory.com/757
TCP
- 두 프로세스 또는 호스트 사이에 믿을 수 있는 연결 지향적인 전송을 제공
- 전 이중 통신 지원 => Full Duplex Transmission
- 데이터의 흐름을 제어 => Flow Control
- 수신 상태를 확인하여 전송 속도를 변경(기법: Slow Start)
- 수신자 상태에 따른 혼잡 제어 => Congestion Control
- •윈도우 크기(Window Size)를 조절하여 수신자의 버퍼 상태를 고려
- 데이터 오류 발생 시 재전송을 통한 오류 제어
- 신뢰성 있는 데이터 전송을 보장
- 송신자는 ACK 회신을 통해 수신 성공을 확인
- TCP기반의 소켓 : 스트림 소켓
- 전송 포트(Source Port, 16비트)
- 운영체제내 송신 프로세스의 주소
- 응용프로그램을 식별하기 위해 운영체제에의해 동적인 번호로 할당됨
- 수신 포트(Destination Port , 16비트)
- 수신 프로세스의 주소
- 수신 포트는 서버 구동 시 할당됨
- 순서 번호(Sequence Number , 32비트)
- TCP 세그먼트의 일련번호
- 일련번호는 세그먼트 별 1씩 증가
- 세그먼트의 누락 해결, 순서 교정 및 중복 세그먼트 방지용
UDP
이러한 프로토콜을 위한 장치들은 어떤것이 있을까?
인터네드워킹 하드웨어
참고 자료
https://marades.tistory.com/15
프로토콜이란?/ OSI 모델 과 TCP/IP 모델