OSI 7 Layer & TCP/IP
Physical Layer
- 디지털 신호를 아날로그 신호로 변환
- 변환한 데이터를 전선을 통해 전달(1대1 연결 상황)
Data-Link Layer
- 다수의 컴퓨터가 통신하기 위해서는 하나의 장비에 전선으로 연결해야 함
- 이러한 장비가 허브
- 허브로 연결된 컴퓨터들은 하나의 네트워크를 구성한 것
- 하나의 네트워크 안에서 컴퓨터가 다른 컴퓨터로부터 데이터를 전송받게 될 때 어디서 어디까지가 어떤 컴퓨터에서 전송한 데이터인지 구별이 불가능
- 이를 해결하기 위해 각 컴퓨터는 데이터에 구분자를 추가해 다른 컴퓨터에 전달하게 됨
- 이것을 framing이라 하고 Data-Link Layer의 역할
- 또, 하나의 네트워크 안에서 컴퓨터가 다른 컴퓨터로 데이터를 전송하기 위해서는 모든 컴퓨터(호스트)에 전송해야 하는 비효율적인 방법을 사용
- 이를 해결하기 위해 데이터의 목적지를 확인해서 전달(switching)하는 스위치 장비가 등장
- 이는 Network Interface Card에 구현되어 있음
Network Layer
- 스위치에 컴퓨터들이 연결되고 이러한 네트워크가 두 개가 있을 때, 이를 연결해주는 것이 라우터
- 이러한 환경에서 컴퓨터가 다른 네트워크로 데이터를 전송하기 위해서는 각 컴퓨터의 고유식별번호인 IP가 필요
- Network Layer는 이를 위해 데이터에 목적지 IP를 추가 -> 신뢰성 있는 전달을 담당
- 목적지가 추가된 데이터를 라우터가 전달하려고 할 때, 해당 IP가 어느 라우터에 연결되어 있는지 알 수 없음
- 이를 위해 라우터끼리 자신들이 가지고 있는 IP대역을 공유하여 데이터를 주고 받을 수 있도록 함
- 이것이 routing
- 이는 OS의 커널에 구현되어 있음
- 최대 전송 데이터 단위는 MTU(Maximum Transfer Unit) -> 전송하는 라우터의 MTU가 작다면 단편화 발생(TCP한정), 수신자가 조립
Transport Layer
- 다른 컴퓨터로부터 데이터를 정상적으로 받아왔을 때, 이 데이터가 어떤 프로세스에 필요한 데이터인지 구별이 가능해야 함
- 이를 프로세스의 식별자인 port 번호로 구분 가능
- Transport Layer는 데이터에 port 번호를 추가
- 데이터의 순차 전송과 송수신자 간의 데이터 처리 속도 차이 해결, 네트워크 데이터 처리 속도 해결 등의 역할도 수행
- 이는 OS의 커널에 구현되어 있음
- 최대 세그먼트 크기는 MSS(Maximum Segment Size) -> 전체 데이터를 MSS에 맞춰 세그먼트화
Session Layer & Presentation Layer
- OSI 7 Layer에 포함되나 TCP/IP 모델에서는 Application Layer에 포함
- session : 응용 프로그램간의 통신에서 연결을 관리
- presentation : 응용 프로그램간의 통신에서 메세지 포맷을 관리(인코딩 - 디코딩, 암호화 - 복호화)
Application Layer
- OS는 Transport Layer에서 제공하는 API를 활용해 사용자가 다른 컴퓨터와 통신할 수 있게 해줌
- 이러한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍이라 함 -> 데이터를 소켓에 write
- 이를 이용해 데이터를 송수신하는 대표적인 프로토콜로 HTTP 등이 있음
- 데이터 단위는 Stream(socket에 대해서)