OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. 흐름을 한눈에 알아보기 쉽고, 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다.
데이터 전송을 위한 물리적 매체(케이블, 광섬유 등)를 다룬다.
비트 스트림을 전기 신호로 변환하거나 광 신호로 변환하여 전송한다.
전송단위는 Bit이다.
물리 계층에서 제공하는 신뢰성 있는 데이터를 보장하기 위하여, 오류 검출과 수정을 수행한다.
프레임단위로 데이터를 전송하며, MAC 주소를 사용하여 물리적인 네트워크 장치 간 통신을 제어합니다.
데이터 전송 단위는 Frame이다.
데이터링크 계층의 가장 잘 알려진 예는 이더넷이다.
여러 개의 네트워크를 걸칠 때, 패킷의 경로를 결정하고, 최적의 경로를 선택한다.
라우팅과 패킷 전달을 담당하며, IP주소를 사용하여 데이터를 목적지까지 전달한다.
데이터 전송단위는 Datagram(Packet)이다.
데이터의 신뢰성과 흐름을 담당한다.
포트번호를 사용하여 애플리케이션 간의 연결을 제공하고, 데이터의 분할과 재조립을 수행한다.
주요 프로토콜로는 TCP와 UDP가 존재한다.
데이터 전송단위는 세그먼트(Segment)이다.
통신 세션을 설정, 유지, 종료하는 역할을 한다.
데이터 전송 중에 오류 복구와 체크포인팅 기능을 제공한다.
데이터의 형식 변환, 암호화, 압축 등의 데이터 표현에 관련된 기능을 수행한다.
데이터의 암호화 및 복호화, 데이터 형식 변환, 문자 인코딩 등을 처리한다.
최종 사용자에게 인터페이스를 제공하는 계층이다.
사용자 인터페이스와 네트워크 간의 상호 작용을 담당하며, 일반적으로, HTTP, SMTP, FTP 등의 프로토콜을 사용한다.
네트워크 계층 중 전송 계층에서 사용하는 프로토콜
인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다.
TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리한다.
연결형 서비스로 가상 회선 방식을 제공한다.
3-way handshaking과정을 통해 연결을 설정하고, 4-way handshaking을 통해 연결을 해제한다.
흐름제어(Flow control) 및 혼잡제어(Congestion Control)을 제공한다.
흐름제어(Flow Control) : 수신 클라이언트의 데이터 처리 속도가 송신 서버보다 느릴 경우에 버퍼에 계속 데이터가 쌓이다가 overflow가 일어나는 문제가 발생한다. 이를 해결하기 위해 수신 클라이언트가 수신 가능 상태를 알려주는 feedback이 필요한데 이러한 기능을 제공하는 것이 Flow Control이다.
• stop and wait 방식
송신 서버는 한번의 데이터 전송 후 멈춘 뒤 수신 클라이언트에게서 잘 받았다는 ACK를 받기까지 기다린다. 송신자는 ACK를 받아야만 다음 데이터를 보낼 수 있기 때문에 과도하게 데이터를 전송할 수 없습니다.
• Sliding Window 방식
Sliding window 방식에는 여러 데이터 패킷을 동시에 전송해 전송 효율을 높이기 위해 윈도우라는 개념을 사용한다. 윈도우는 송신측과 수신측에 각각 송신 윈도우(awnd), 수신 윈도우(rwnd)가 존재한다.
송신윈도우(awnd) : 송신자가 ACK를 수진받지 않아도 한 번에 연속적으로 전송할 수 있는 데이터 양을 의미
수신윈도우(rwnd) : 수신자가 수신 버퍼 overflow가 일어나지 않는 한에서 한 법ㄴ에 받을 수 있는 데이터양을 의미
Congestion Control : 송신측의 데이터 전달과 네트워크의 처리속도 차이를 해결하기 위한 기법이다. 손신자가 데이터 전송량을 늘리면 네트워크 경로 상의 라우터에는 과부하가 걸려 전송 지연시간이 증가하거나 버퍼 overflow로 데이터 드랍이 일어나는데 이를 네트워크 혼잡이라고 한다. 혼잡으로 인해 데이터가 드랍되면 TCP는 드랍된 데이터를 재전송하기 때문에 네트워크 혼잡이 더욱 가중된다. 이를 위해 송신 서버는 네트워크 혼잡을 해결하고 방지하기 위해 전송 속도를 조절할 필요가 있는데, 이를 Congestion Control 이라고 한다.
• Slow Start 방식
윈도우의 크기를 2배로 늘린다. 그러다 혼잡현상이 발생하면 크기를 1로 떨어뜨린다.
• Fast Recovery 방식
윈도우의 크기를 2배로 늘리다가 임계구역을 지나면 조금씩 올린다 그러다 혼잡현상이 발생하면 크기를 절반으로 줄이고 다시 증가시킨다.
높은 신뢰성을 보장한다.
데이터 전송속도가 UDP보다 느리다.
전이중, 점대점 방식이다.
연속성보다 신뢰성있는 전송이 중요할 때에 사용된다.
데이터를 데이터그램 단위로 처리하는 프로토콜이다.
비연결형 서비스로 데이터그램 방식을 제공한다.
• 연결을 위해 할당되는 논리적인 경로가 없다.
• 그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 된다.
• 데이터를 서로 다른 경로로 독립적으로 처리한다.
정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
신뢰성이 낮다.
TCP보다 속도가 빠르다.
신뢰성 보다는 연속성이 중요한 서비스, 실시간 서비스에 사용된다.
참고
https://github.com/WeareSoft/tech-interview/blob/master/contents/network.md