개발 일기

[Computer Network] OSI 7계층 본문

Computer Science/Computer Network

[Computer Network] OSI 7계층

개발 일기장 주인 2024. 12. 17. 15:03

이전에 컴퓨터 네트워크 시간에 열심히 배웠었지만 한 순간에 까먹어버렸고 중간 중간 개발 공부를 하다보면 튀어나오는 이 용어에 대해 다시 기억을 되살릴 필요가 있다고 생각되어 정리해보게 됐다.


OSI 7계층

SI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것으로 각 레이어 별로 역할이 다르다.

하나씩 뜯어보자.

Application Layer(응용 계층)

  • 사용자와 직접 연결되어 네트워크 접근을 돕는 계층
  • 데이터 전송을 위한 인터페이스 제공
  • 사용자로부터 입력 받은 정보를 하위 계층에 전달한다.

 Presentation Layer(표현 계층)

  • 데이터를 응용 계층에 사용하는 표현으로 변환해주는 계층
  • 데이터의 인코딩과 디코딩이 이루어 진다. ex) 문자열을 아스키 코드로

Session Layer(세션 계층)

  • 컴퓨터간 연결인 세션의 생성과 유지를 관리하는 계층
  • 오류 발생 시 복구 역할을 수행
  • 이떄 세션은 프로세스들 사이에 통신을 하기 위해 메시지 교환을 통해 서로를 인식한 이후부터 통신을 마칠때 까지의 기간

 Transport Layer(전송 계층)

  • 종단 간 데이터를 신뢰성 있게 전송하기 위한 계층
  • 데이터를 쪼개어 앞에 헤더를 붙혀 Segment 단위로 나누어 전송하고, 실패한 경우 다시 패킷을 보내는 등의 역할
  • 포트 결정
  • TCP프로토콜 / UDP 프로토콜

 

Network Layer(네트워크 계층)

  • 데이터 전송 경로, 순서 등을 결정하는 계층 (가장 효율적인 루트) = 빠르게 빠르게
  • Segment 앞에 또 헤더를 붙혀 Packet으로 구성하여 전송하고, 수신 시 합치는 역할을 한다.
  • IP 주소를 통해 데이터를 빠르게 전송
  • 라우터를 통해 전송을하는데 주소 정보는 packet에 있기 때문에 패킷 전송 패킷 전송하는 것.

 Data Link Layer(데이터 링크 계층)

  • 물리적인 기기(인접한 노드)들 사이에 신뢰성 있는 데이터를 전송하는 계층
  • 패킷 앞에 또 헤더를 붙혀 Frame으로 구성하고 각 프레임에 대한 에러 검사와 수정을 수행한다.
  • MAC 주소를 사용하여 데이터를 전송
  • 허브, 리피터

 Physical Layer(물리 계층)

  • 데이터를 물리적인 신호로 변환하는 계층
  • 단순 전달만 수행하며, 데이터를 검증하지 않음
  • 프레임을 비트 단위의 전기 신호를 전달한다.

우리가 흔히들 TCP/IP라고 말하는데 그 이유가 TCP는 Transport Layer로 신뢰성 있는, IP는 Network Layer로 빠르게 전달 하는 역할을 하고 있기 때문이다. 


TCP 3-way Handshake(커넥션 연결)

TCP 프로토콜로 통신하기 위해 데이터 전송 전 상호 연결을 수립하는 과정으로 상대방과 논리적 세션을 맺는 시작점으로 해당 과정을 거친 후에 데이터들을 정상적으로 송수신하는 절차를 가진다.
즉, 데이터를 전송할 준비가 되었다는 것을 보장 및 데이터 전송 준비 확인하는 과정이며 3-Way Handshake 과정에서 정상적으로 세션이 맺어 지지 않으면 통신을 중단한다.

SYN → SYN-ACK → ACK의 세 번의 패킷 교환을 통해 TCP 연결을 설정하는 과정이라 3-way handshake라고 한다.

  1. 클라이언트에서 서버로 커넥션을 요청할때 SYN 플래그를 1로하여  패킷 송신
  2. SYN, ACK비트를 1로 설정해 패킷 송신
  3.  클라이언트에서 다시 ACK를 1로 설정해 패킷 송신 이렇게되면 ESTABLISHED LISTEN상태가된다.
  4. 그래서 이제 클라이언트에서 패킷을 보내고 잘 받았으면 서버는 클라이언트로 ACK를 보낸다.
  5. 클라이언트에서 ACK를 받지 못하면 재전송한다.
  6. 데이터를 전부 송신한 클라이언트는 연결을 끊고자 FIN=1로 하여 송신한다.
  7. 서버는 ACK를 보내주고 서버에서 혹시 아직 보낼 패킷이 남아있다면 남은 패킷 송신(일정 시간 대기)
  8. 다 보내면 서버도 FIN을 송신한다.
  9. Client가 FIN을 확인하고 ACK를 보내면 통신이 종료된다.