9/9 OSI 7계층 - 네트워크 계층, 전송 계층

성준호·2024년 9월 9일
0

네트워크 계층

네트워크 계층은 데이터를 패킷 단위로 전송한다.
여러 경로 중 패킷을 보내기 위한 가장 좋은 경로를 선택하는 라우팅을 수행한다.
논리 주소인 IP 주소를 헤더에 포함하여 전송하기 때문에 송신지에서 수신지까지 주소가 변경되지 않고 유지된다.

IP의 개념
IPv4, IPv6 두 가지가 사용된다.
IP 패킷에는 대상의 IP 주소가 포함된다.

서브넷 마스크
IP 주소를 네트워크 환경에 맞게 나눠주기 위해 씌우는 이진수의 조합
서브넷은 IP 주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크를 뜻한다. 이러한 서브넷을 만들 때 사용되는 게 서브넷 마스크이다.

동적 IP 주소
고정 IP 주소와 달리 동적 IP 주소는 변경될 수 있다. 이는 DHCP(Dynamic Host Counfiuguration Protocol)라는 것에 의해 할당된다.
네트워크 장치에 IP 주소를 자동으로 할당한다. 보안이 뛰어나다.

라우팅
네트워크에서 경로를 선택하는 프로세스이다. 상호 연결된 네트워크에서 두 노드 간의 통신은 여러 경로를 통해 이루어질 수 있다. 라우팅은 미리 정해진 규칙을 사용하여 최상의 경로를 선택하는 프로세스이다.
네트워크 통신의 효율성을 높인다. 데이터 트래픽을 관리하여 네트워크 장애를 최소화해준다.

전송 계층

물리 계층 ~ 네트워크 계층까지는 데이터 전달을 위한 경로 관리 역할을 한다.
세션 계층 ~ 응용 계층까지는 이용자 서비스와 관련된 기능을 한다.
전송 계층은 이 두 서비스 간의 인터페이스 기능과 전체 메시지의 종단간 전송을 수행한다.
전송 계층의 헤더는 포트번호나 소켓주소로 불리는 서비스 지점 주소를 포함하고 있다.
프로토콜과 관련된 계층으로 에러 복구, 흐름 제어 등을 담당하며 신뢰성 있는 데이터 전송을 보장한다.

TCP
TCP(전송 제어 프로토콜)는 인터넷을 통에 디바이스에서 웹 서버로 데이터를 전송하는 네트워크 프로토콜이다. 채팅, 이메일, 동영상, 웹 검색 등에 사용된다.
데이터를 전송하는 동안 수신자와 발신자 사이에 연결을 설정하고 데이터가 온전하게 도착하도록 보장한다. 이러한 신뢰성 때문에 TCP는 가장 널리 사용되는 네트워크 프로토콜이다.

장점

  • TCP는 운영체제와 독립적으로 작동하여 시스템과 디바이스 간 상호 운용성이 향상된다.
  • 데이터를 전송할 때 오류를 검사하여 데이터가 목적지에 온적하게 도달하도록 보장한다.
  • 수신자의 용량에 따라 데이터를 전송하는 속도를 최적화하고 변경한다.
  • 데이터가 목적지에 도달했는지 확인하고 첫 번째 전송이 실패한 경우 재전송을 시도한다.

단점

  • UDP보다 속도가 느리다.
  • 전송 중 데이터가 손실되면 다른 정보를 로드하지 못할 수 있다. 예로 페이지에서 이미지나 영상같은 한 요소가 로드되지 않으면 나머지 데티어도 로드되지 않을 수 있다.
  • 근거리 통신망이나 개인 영역 네트워크에서 제대로 작동하지 않는다.

UDP
TCP에 비해 안정성은 떨어지나 더 빠르고 간단하다. 스트리밍, 게임과 같이 빠른 속도가 중요한 상황에 쓰인다. 이는 비연결 방식으로 두 당사자 간에 사전 연결을 설정하지 않는다. 그 과정에서 데이터가 손실될 가능성이 있지만, 그 대신 훨씬 빠른 속도를 얻는다.

장점

  • 더 작은 패킷을 더 적은 오버헤드로 전송하여 지연을 줄인다.
  • 일부 패킷이 누락되더라도 데이터를 전송하므로 패킷 손실로 인해 전체 전송이 중단되지 않는다.
  • 브로드캐스트 및 멀티캐스트 기능을 통해 하나의 UDP 전송을 여러 수신자에게 한 번에 전송할 수 있다.

단점

  • 데이터 패킷이 목적지에 성공적으로 도달했는지 여부를 확인하지 않는다
  • 전송이 온전하게 도착한다고 보장할 수 없다. 일부 패킷이 손실되었을 수 있지만 발신자 측에서 이를 확인할 수 있는 방법은 없다.
  • 라우터가 데이터 패킷의 우선순위를 정해야 하는 경우, UDP 패킷보다 TCP 패킷을 먼저 전송할 가능성이 높다.
  • 특정 순서로 데이터를 전송하지 않으므로 패킷은 어떤 순서로든 도착할 수 있다.

포트
네트워크 상에서 통신을 할 때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다.
그런데 하나의 컴퓨터에는 여러 개의 서버가 실행될 수 있다. 이런 경우 어느 서버에 접속해야 하는지 컴퓨터에게 알려주어야 한다.

포트번호
컴퓨터에서 실행되고 있는 서버를 구분 짓기 위한 16비트의 논리적 할당으로 0~65536번이 존재한다. IP 내에서 프로세스 구분을 하기 위해 사용한다.
0~1023번까지는 이미 어떤 통신이 해당 포트를 사용할 것인지 정해져 있다. 예로 http 통신은 80번, ssh 통신은 22번 포트를 사용한다. 이렇게 정해져있는 0~1023번까지의 포트를 well-known port라고 한다.
웹서버는 기본적으로 80번 포트와 연결되어있다. 만약 웹서버를 하나 더 사용하고 싶은 경우 80번 포트는 이미 기존 웹서버가 사용중이므로 사용할 수 없다. 이 경우 well-known port가 아닌 다른 포트들과 연결하여 사용한다. 보통 관습적으로 8080 포트를 연결하여 사용한다 (톰캣)
URL에 포트번호를 적어서 통신할 포트를 구분한다. 예로 http://naver.com에 접속하면 80포트에 연결된다. 80포트는 생략이 가능하기 때문이다. http://naver.com:8080에 접속하면 8080포트에 연결된다.

포트 포워딩
외부에서 공유기 내의 특정한 장치로 접속하기 위해선 IP 주소를 알아야 하지만 공유기 내부의 IP는 사설 IP로 이루어져있어 외부에서 IP만으로 특정 PC를 지정할 수 없다. 따라서 공유기의 공인 IP로 접속한 후 특정한 PC로 연결되도록 포트 넘버를 공유기에서 정의해주는 작업이 필요하다. 이를 포트 포워딩이라 한다.

profile
안녕하세요

0개의 댓글