OSI 7 계층이란?
네트워크 통신이 이루어지는 과정을 7단계로 나눈 네트워크 표준 모델이다.
데이터 송신
높은 계층 -> 낮은 계층
데이터 수신
낮은 계층 -> 높은계층
으로 데이터가 이동한다.
데이터 캡슐화
각 계층은 독립적이며 데이터를 송신할 때 계층에서 필요한 정보를 추가해 데이터를 가공한다.
제어 정보를 담은 헤더 or 트레일러가 붙는다.
데이터 캡슐화를 하는 이유는 수신부의 같은 계층에서 데이터 호환성을 높이고 오류의 영향을 최소화하기 위함이다.
송신부에서 데이터 캡슐화를 거쳐서 결과물을 수신부로 보낸다.
수신부는 물리 계층부터 응용 계층까지 거치며 받은 데이터에서 헤더와 트레일러를 분석해 제거하는 역캡슐화
를 진행한다.
OSI 7계층별 설명
1계층 (물리 계층)
데이터를 bit단위의 0과 1로 변환한 후 장비를 사용해 전송하거나 전기 신호를 데이터로 복원한다.
2계층(데이터 링크 계층)
- 프레임 단위로 데이터를 주고 받는다. 오류 검출 및 수정을 수행한다.
- 흐름제어와 전송 오류 처리를 통해 안정적인 데이터 전송을 보장합니다.
- MAC주소를 이용해 같은 네트워크 내 장치 간의 통신을 관리한다.
3계층(네트워크 계층)
- 데이터 패킷을 라우팅하여 적절한 경로를 통해 목적지로 전송한다.
- IP주소를 사용해 출발지와 목적지 장치를 식별한다.
- 패킷 분할 및 재조립 작업을 수행해 큰 데이터를 작은 단위로 나누어 전송한다.
4계층(전송계층)
신뢰성 있는 데이터를 전달하기 위한 계층, TCP, UDP같은 전송 방식과 포트번호를 결정
- TCP 신뢰성있는 연결을 위해 패킷 손실시 재전송, 데이터 흐름 제어 , 오류 수정 기능을 제공한다.
- UDP : 신뢰성보다 빠른 전송을 우선시해 오류 검출 및 재전송 기능이 없지만 속도가 빠르다.
- 데이터를 세그먼트 단위로 처리하고 포트 번호를 통해 애플리케이션을 구분한다.
5계층(세션 계층)
통신하는 장치 간의 세션 관리를 담당하며, 통신을 열고 유지하며 종료
- 세션 설정, 유지, 종료 기능
- 데이터 전송 중 중단 시 재전송을 요청하고 복구 기능을 수행
- 다중 작업시 통신을 구분하고 관리
6계층(표현 계층)
데이터를 사용자, 애플리케이션이 이해할 수 있는 형식으로 변환, 데이터 암호화 , 압축 수행
- 데이터 변환 : 데이터를 텍스트, 이미지, 동영상으로 변환한다.
- 암호화 및 복호화 : 보안 통신을 위해 암호화를 적용하거나 해제한다.
- 압축 및 해제 : 데이터의 효율적인 전송을 위해 압축 및 해제 기능을 수행한다.
7계층(응용 계층)
사용자와 네트워크 간 직접적인 상호작용을 담당하고, 사용자가 네트워크에 접근할 수 있는 인터페이스 제공
- 웹 브라우징, 이메일 전송, 파일전송 등 네트워크 애플리케이션 기능 제공
- 사용자가 네트워크를 통해 데이터를 주고받을 수 있는 인터페이스 제공
패킷전송 중 연결이 끊기게 된다면?
송신부에서 패킷이 제대로 연결된 상태
수신부의 4계층(전송)에서 일어나는 일
- 전송 계층이 패킷 유실 여부를 확인하고 필요한 조치를 취한다.
- ACK
TCP는 수신부에서 패킷이 제대로 도착했을 때 확인 응답(ACK)을 송신부에 보낸다. 만약 송신부가 일정 시간 내에 ACK을 받지 못하면 패킷이 손실된 것으로 간주하고 해당 패킷을 다시 전송한다.
- 시퀀스 번호
수신부는 도착한 패킷의 시퀀스 번호를 보고 순서가 맞지 않거나 누락된 패킷이 있는지 확인한다. 만약 누락이 있으면 재전송 요청을 하게 된다.
- 타이머 기반 재전송
송신부는 패킷을 전송한 후 일정 시간 동안 수신부로부터 ACK응답이 오지 않으면, 패킷이 유실된 것으로 간주하고 타이머 기반으로 재 전송을 시도한다.
타이머 기반 재전송
송신자가 패킷을 전송한 후 일정 시간 동안 수신자로부터 ACK응답을 받지 못한 경우, 타이머가 만료되면 해당 패킷을 다시 전송하는 방식
결론!!
-
3-WAY Handshake로 TCP연결을 설정한다. 통신을 시작하기 전 송신부와 수신부가 서로를 확인하고 데이터를 주고 받을 준비가 되었는지 체크한다.
-
데이터 전송 중에는 각 패킷마다 시퀀스 번호가 포함되어 전송된다. 시퀀스 번호는 수신부가 받은 패킷의 순서를 추적하는데 사용된다.
-
시퀀스 번호를 통해 수신부는 어떤 패킷이 유실되었는지 확인한다. 유실된 패킷이 있다면 수신부는 송신부에서 재전송 요청을 보낸다.
예를 들어 수신부가 시퀀스 번호2까지 받은 상태에서 3번 패킷이 유실되면, 수신부는 계속해서 2번 패킷에 대한 ACK을 보내 송신부가 3번 패킷을 재전송하도록 유도한다.
-
ACK응답을 받지 못한 경우에는 송신부는 해당 패킷이 수신부에 도착하지 않았다고 판단하고 재전송을 시도한다.
SSL은 어떻게 적용되는 걸까?
전송 계층 위에서 보안 계층을 제공하는 프로토콜이다.
주로 응용계층과 전송계층 사이에서 동작한다. TCP연결이 수립된 후 SSL/TLS가 그 위에서 데이터를 암호화하고 보호하는 역할을 수행한다.
전송계층과 응용계층 사이에서 보안을 제공한다.
즉 응용 계층에서 사용하는 데이터가 전송 계층을 통해 암호화된 상태로 전송될 수 있도록 보안 기능을 담당한다.
SSL/TLS의 위치
- 전송계층과 응용계층 사이에 위치하며, TCP를 기반으로 보안 통신을 제공
- TCP 연결이 먼저 성립되고, 그 위에서 SSL/TLS 핸드셰이크가 시작된다.
즉, 전송계층 위에서 동작하는 보안 계층
결론!!
- 전송 계층과 응용계층 사이에 위치하며 TCP를 기반으로 보안 통신을 제공한다.
- TCP연결이 먼저 성립되고, 그 위에서 SSL/TLS핸드셰이크가 시작된다.
REVIEW
데이터는... 이렇게 전송되는군요...
참고
3Way HandShake
상대방 컴퓨터와 세션을 수립하는 과정
- 송신부가 수신부와 연결을 위해 SYN을 보낸다. 이때 SYN에 임의의 숫자 N을 붙여서 보낸다.
- 수신부가 SYN을 받으면 ACK을 보낸다. 이때 SYN에있는 N값에 1을 더해서 보내게 된다. 그리고 새로운 SYN메세지를 보내는데 이때 임의숫자 M을 붙여서 보낸다.
- 송신부가 메세지를 받고 ACK보낸다. 마찬가지로 M +1 을 수행한 값으로 보낸다.
4Way -HandShake
TCP연결을 해제할 때 이뤄지는 과정
1. 수신부와 연결을 끊기 위해 FIN메세지 보냄
2. 알았다는 ACK메세지를 보냄
3. 연결을 종료할 준비가 되면 FIN메세지를 수신부가 송신부에게 보냄
4. 송신부는 수신부의 FIN메세지를 받고 알았다는 ACK메세지를 보내고 기다림
기다리는 이유는 FIN 메시지 전에 보낸 패킷이 지연되어 유실되는 상황에 대비하게 위해 잠시 대기한후 closed상태가 된다.