(Open systems Interconnection)
배경
1980년대 컴퓨터 통신망이 확산되면서 여러 통신망이 공존하는 상황이었다.
통신규격 통일의 필요성을 느낀 ISO (국제 표준화기구)에서는 1984년 OSI 참조 모델을 발표한다.
이 모델은 서로 다른 컴퓨터 기기 간에 네트워크를 형성할 수 있도록 규정한 네트워크 모델 표준안이다.
계층화
모듈들이 계층을 이루도록 역할과 책임을 세분화 하는 것
ex) 항공 (매표소 - 수하물 - 게이트 - 활주로 - 비행기)
why? ⇒
복잡한 시스템의 구조를 분리해서 명확하게 한다.
모듈화로 시스템의 관리와 갱신을 용이하게 한다.
너무 세부화된 계층은 오히려 기능을 복잡하게 만들 수 있다.
각 계층은 ( ) 서비스를 구현한다.
너무 세부화된 계층은 기능을 복잡하게 만듦 ⇒ OSI 7 계층은 이론적으로만 남게 됨.
실제로는 TCP/IP 프로토콜 계층을 사용함.
OSI : 서로 다른 컴퓨터 기기 간에 네트워크를 형성할 수 있도록 규정한 네트워크 모델 표준안
TCP/IP : 인터넷 프로토콜을 사용해서 인터네트워킹을 가능하게 하는 프로토콜의 suit
사용자와 가장 밀접한 계층으로 인터페이스 역할
응용 프로세스 간의 정보 교환을 담당
예 : 전자메일, 웹, 문자 메시지, p2p파일 공유, 네트워크 게임, 비디오 스트리밍, 실시간 화상회의, SNS, 검색, …
서로 다른 종단 시스템에서 실행됨
프로세스 : 호스트에서 실행되는 프로그램
소켓 : 어플리케이션 프로세스를 그 밑에 있는 tcp/ip 프로토콜과 연결해주는 부분
메시지를 받기 위해 프로세스는 식별자가 필요하다.
호스트는 고유의 32-bit IP 주소를 가짐
(IP 주소만으로는 호스트 내에서 실행되는 프로세스를 식별할 수 없음)
⇒ 식별자 : port number
서버의 port number와 클라이언트의 port number는 별개다.
애플리케이션마다 중요하게 생각하는 것이 다름
이러한 성격에 따라 소켓은 TCP 소켓 ? UDP 소켓 ? 어떤 걸 만들어야할지 제일 먼저 고민해야 함.
ㅁ 표현 계층 (Presentation Layer) - 6계층
데이터를 어떻게 표현할지 결정하는 역할 (데이터의 형식 결정)
송신자에게서 온 데이터를 해석하기 위한 데이터 부호화, 변화 담당
데이터 암호화 복호화
ㅁ 세션 계층 (Session Layer) - 5계층
통신 장치 간 상호작용 및 동기화 제공
전송 계층의 주소 : IP + Port number
서로 다른 호스트의 프로세스들 간에 논리적 통신을 제공한다.
전송계층 프로토콜은 종단시스템에서 수행된다.
송신측 : 메시지를 세그먼트로 쪼개서 네트워크 계층에 전달
수신측 : 세그먼트를 메시지로 재조립해서 애플리케이션 계층에 전달
UDP (User Datagram Protocol)
best-effort service
비연결형
스트리밍 멀티미디어 서비스, DNS, …
UDP segment header
송수신 프로세스 간의 비신뢰적 전송 (에러가 있다는 사실만 알려줌 ⇒ 응용 계층에서 알아서 해결)
제공하지 않는 것 : 신뢰성, 흐름 제어, 혼잡 제어, 시간보장, 처리율보장, 보안, 연결 설정
사용하는 이유 ? 단순하기 때문. 최대한 빨리빨리 !
대부분의 서비스에서 TCP를 사용. DNS 등 UDP 사용
예전에는 스트리밍 서비스에서 유실을 어느 정도 허용했기에 UDP를 사용했지만 요새는 TCP 사용 (버퍼 이용)
신뢰있게 데이터를 전송하는 원리 (Reliable Data Transfer)
ACK / NAK가 손상되면 ?
송신측은 수신측에서 일어나는 일을 알 수 없다. 무작정 재전송하는 것도 불가 (중복 가능성)
⇒ 중복 처리 : 패킷에 순서번호를 추가
파이프라인 기법
- in-flight로 전송하는 것을 허용
- 순서 번호의 범위 증가
- go-back-n : 오류 난 곳부터 다시 받음
- selective repeat : 오류난 부분만 다시 받음
네트워크 계층의 주소 : IP Address
라우팅 기능을 맡고 있는 계층
목적지까지 가장 안전하고 빠르게 데이터를 보낼 최적의 경로를 설정
송신 호스트에서 수신 호스트로 segment 전달
송신측에서는 segment를 datagram으로 캡슐화함
수신측은 트랜스포트 계층에 segment 전달
네트워크 계층의 두 가지 주요 기능
네트워크 계층의 두 가지 영역
각각의 라우터는 forwarding table을 가짐.
IP datagram 형식
단편화와 재결합
데이터링크 계층의 주소 : MAC Address
물리적인 연결을 통해 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당
주요 역할 : 프레이밍, 흐름 제어, 오류 제어, 접근 제어, 동기화
링크 계층은 랜카드에 상당 부분 구현됨. (모든 호스트에 각각 구현)
전기적, 기계적, 기능적인 특성을 이용해 데이터를 전송
데이터를 전송하는 역할을 할 뿐, 알고리즘이나 오류제어의 기능이 없음