네트워크 교실 5장. 커넥션과 포트 번호

sanghee·2021년 12월 3일
0
post-thumbnail

이 글은 네트워크 교실(아미노 에이지 지음)을 읽고 간단하게 정리한 글입니다. 책에 친절한 설명과 관련 그림이 있으므로 직접 사서 읽기를 추천합니다.

5장. 커넥션과 포트 번호

36. 4계층의 역할과 개요

1계층, 2계층, 3계층

  1. 1계층은 케이블(통신 매체)이 연결되어 있는 상대에 대한 신호전달
  2. 2계층은 세그먼트(라우터와 라우터 사이) 내에서 어떻게 데이터를 송수신 하는지
  3. 3계층은 네트워크와 네트워크 사이에서 어떻게 데이터를 송수신 하는지

4계층

4계층에서는 전달하거나 전달된 데이터에 대한 처리를 수행한다. 수신처 자체가 존재하지 않거나 데이터가 도중에 손실되었거나 에러에 의해 파기되는 등의 에러들을 복구한다.

에러 복구

보통 데이터를 수신하면 송신처에서 수신(확인응답)하였음을 통지한다. 그러나 데이터가 손실되어서 응답이 도착하지 않은 경우 송신처는 데이터를 다시 보낸다.

흐름 제어, 오버 플로우(Over Flow)

4계층은 흐름 제어 방식으로 에러를 복구한다. 예를 들어, 처리 능력을 넘어선 정보를 받는 것을 오버 플로우라고 한다. 이것을 다음과 같이 해결한다.

  1. 수신처는 데이터를 받아서 일시적으로 모아둔다. 그리고 준비되는 대로 처리한다.
  2. 처리가 늦어지거나 송신 속도가 빠른 경우 데이터가 쌓인다. 결국 모아둘 수 없으면 파기해야 한다.
  3. 그것을 방지하기 위해서 모아둘 수 있는 데이터 양을 송신처에서 통지하여 송신량을 줄이거나 송신을 일시적으로 중지하도록 한다.

애플리케이션(Application)

통신에서 데이터를 주고받는 컴퓨터 소프트웨어를 애플리케이션이라고 한다. 컴퓨터가 데이터를 주고받는 것이 아니라, 컴퓨터 내의 애플리케이션이 주고받는 것이다.

포트 번호(Port Number) == 항구 번호

Port란 항구를 의미한다. 데이터를 넣고 꺼내는 가상의 출입구이다. 각 애플리케이션에는 포트 번호가 장치되어 있다. 수신처의 컴퓨터까지 도달한 데이터는 포트 번호를 근거로 그 데이터가 사용될 애플리케이션에 전해진다.

TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)

4계층에서는 이러한 통신에 필요한 처리를 하는데, TCP/IP에서 이런 제어를 행하는 것이 TCP와 UDP이다. 통신할 때 송신할 데이터의 내용과 상황에 따라 둘 중 하나를 선택해 사용한다.

37. 커넥션과 세그먼트

TCP의 커넥션(Connection) == 연결

TCP의 커넥션이란 애플리케이션 간의 송수신을 하는 데이터의 길이라고 한다. 데이터 송수신을 하기 위해서는 컴퓨터와 컴퓨터의 연결이 아니라, 애플리케이션과 애플리케이션이 연결되어 있어야 한다. 실제로 데이터를 주고받는 것은 컴퓨터가 아니라 애플리케이션이기 때문이다. 이 길을 커넥션이라고 한다.

데이터 전송 이전

데이터 전송을 시작하기 전에 미리 통신로가 연결되어 있는지 확인을 주고받아야 한다.

커넥션 확립

가상의 통신로를 만들어 내는 것을 커넥션 확립이라고 한다. 쌍방향의 통로가 확보되어야 한다.

쓰리웨이 핸드쉐이크(3way Handshake)

3방향의 악수라는 의미이다. 3번의 데이터 송수신으로 쌍방향의 통신로를 확립한다. 쓰리웨이 한드쉐이크의 흐름은 아래와 같다.

  1. 상대에게 데이터 전송의 허가를 요청한다.
  2. 상대는 그것에 대한 허가를 알린다. 이걸로 통신로가 확보되었다(커넥션 확립).
  3. 상대가 데이터를 보내라고 요청한다.

MSS(Max Segment Size)

TCP는 애플리케이션으로부터 받은 데이터(메시지)를 세그먼트로 캡슐화한다. 캡슐화할 때, 한 개의 데이터를 MSS 단위로 분할하는데, 한 개의 데이터가 복수의 세그먼트가 된다.

시퀸스 번호

그리고 각각의 세그먼트에 번호를 부여한다. 이것을 시퀸스 번호라고 한다. 즉, 세그먼트에 포함되어 있는 데이터의 선두 옥텟에 분여진 번호이다.

38. 윈도우 제어

시퀸스 번호

시퀸스 번호란 보내는 데이터의 앞 부분에 있는 옥텟 번호이다. 세그먼트가 보내는 데이터가 전체의 어느 부분에 해당하는 지를 알 수 있다.

확인응답 번호

세그먼트를 수신하면, 수신한 것을 송신처에게 전달하는데 이것을 확인 응답이라고 한다. 확인응답 번호는 다음에 받고 싶은 데이터의 선두 옥텟 번호이다. 다음에 받고 싶은 데이터 번호를 알 수 있다.

예를 들어 확인응답 번호가 100번이라면, 99번까지는 수신했으니 100번부터 보내라는 의미이다.

RTT(Round Trip Time)

지금까지 보낸 데이터에 대해 확인응답이 돌아오기까지 걸린 시간을 의미한다. 초기값인 3초 이내에 확인응답이 도달하지 않는 경우 재전송을 한다. 초기값인 3초는 데이터를 송수신하면서 동적으로 변경한다.

TCP의 오버플로우 방지

TCP는 데이터가 넘치는 것(오버플로우)를 방지해야 한다. 데이터를 보내는 상대에게 자신이 어느 정도 버퍼량을 가지고 있는지를 알려줘야 한다.

윈도우 사이즈 == 남아있는 버퍼량

윈도우 사이즈란 확인응답을 기자리지 않고 보낼 수 있는 데이터 양이다. 윈도우 사이즈만큼 데이터를 한번에 보내도 오버플로하지 않는다.

윈도우 제어

확실하게 수신할 수 있는 용량의 데이터(윈도우 사이즈)만 송수신한다. 이것을 윈도우 제어라고 부른다.

39. 포트 번호

데이터 통신

데이터 통신이란 애플리케이션과 애플리케이션이 통신하는 것이다.

포트 번호(Port Number) == 데이터 출입구

포트 번호란 어느 애플리케이션으로부터 송수신 되었는지를 나타낸다. 통신 데이터를 흐르게 하기 위한 가상의 출입구이다. 각 애플리케이션은 그 중 하나를 선택해서 데이터 송수신의 입구로 삼는다.

포트 번호는 16비트, 즉 65,536개가 있다. 통신중인 애플리케이션은 각각 이 포트 번호와 접속하고 있다.

포트 번호 사용 조건

  1. 수신처 포트 번호를 알아야 한다.
  2. 수신 받을 애플리케이션이 포트와 접속해 있어야 한다.

웰 노운 포트(Well Known Port)

웰 노운 포트란, 말 그대로 잘 알려진 포트이다. 1번부터 1023번까지가 해당된다. 자주 사용하는 서버 애플리케이션(서비스를 제공하는 애플리케이션)은 사전에 정해진 포트 번호(웰 노운 포트)가 있다. 이 정해진 포트에 데이터를 보낸다.

송신처의 포트 번호

웰 노운 포트를 제외한 1024~49151번까지는 등록된 포트로 이미 정해진 애플리케이션과 연결되어 있는 포트 번호이다. 송신처의 포트 번호는 이 번호를 제외한 번호 중에서 원하는 번호를 선택해서 사용한다.

포트 번호 구분

  1. 0~1023: 웰 노운 포트 번호
  2. 1024~49151: 등록된 포트 번호
  3. 49152~65536: 송신처의 포트 번호

포트번호 조건

다른 애플리케이션이 사용하고 있는 번호를 사용해서는 안된다. 단, 서버 애플리케이션은 지금 현재 애플리케이션이 사용하고 있는 포트 번호를 전달할 방법이 없다(포트 번호를 모르면 애초에 연결이 안되어 통신이 불가능하기에). 그리서 개별적으로 메일 등으로 전달하는 수밖에 없다.

40. UDP

TCP의 장점 == 정확

  • 쓰리웨이 핸드쉐이크(SYN, ACK 등의 제어 비트, 커넥션 확립하기 위함)
  • 흐름 제어(버퍼의 오버플로우 방지)
  • 윈도우 제어(윈도우 사이즈, 남은 버퍼량)
  • 에러 복구(확인응답 신호가 없는 경우 다시 데이터를 전송함)

등으로 정확하고 확실하게 데이터를 송수신한다.

TCP의 단점 == 저속

위의 장점이 곧 단점이다. 각각 확인응답을 기다려야 하기에 전송 효율이 저하된다.

UDP(User Datagram Protocol) == 고속

TCP와 비교했을 때 포트 번호만 가지고 있다. 전송 효율이 높은 것이 최대 특징이자 장점이다. 단점은 바로 정확하거나 확실하지 않다는 것이다.

UDP 용도

UDP는 다음과 같은 데이터 송수신에 사용된다.

1. 고속성이나 실시간 송수신이 필요한 애플리케이션

VoIP(Voice over IP)와 같은 음성전화나, 동영상 스트리밍 등에서 사용된다.

2. 브로드캐스트가 필요한 애플리케이션

브로드캐스트란 다수에게 통신하는 것이다. 만약 TCP를 사용한다면 커넥션과 확인응답을 위해 주소를 특정해야 하기 때문이다. 그리고 다수의 각각에 대해 커넥션을 확립함과 동시에 각각 사용할 버퍼를 확립해야 한다.

UDP는 상대의 주소를 몰라도 송신할 수 있으므로 사용한다.

41. 네트워크 주소 변환

글로벌 IP 주소

ICANN에서 IP 주소가 유일하도록 관리하고 있는 주소를 의미한다.

사설 IP 주소

인터넷에 연결하지 않는 조건이라면, IP 주소가 유일하지 않아도 된다. 이렇게 자유롭게 사용할 수 있는 주소를 주소를 사설 IP 주소라고 부른다.

글로벌 IP 주소 부족

인터넷에 접속하는 대수가 너무 많아 글로벌 IP 주소가 부족하다.

네트워크 주소 변환(Network Address Translation, NAT)

만약 인터넷에 접속하고 싶은 500대의 컴퓨터가 있다면 어떻게 해야 할까? 500대의 글로벌 IP 주소가 필요할 것이다. 하지만 IP 주소는 부족하기에, 보통 16개정도밖에 할당받지 못한다. 여기서 NAT이 필요하다.

내부 네트워크에서는 인터넷과 주고받지 않고 내부 네트워크 내에서 통신할 때 사설 IP 주소를 사용한다. 그러다가 인터넷을 할 때에는 글로벌 IP 주소로 변환한다.

NAT의 단점

동시 접속수의 문제이다. 이전에 글로벌 IP 주소를 16개밖에 할당받지 못했다. 인터넷을 동시 접속할 수 있는 컴퓨터는 16대로 제한되어 있다. 이러한 단점을 발전시킨 것을 NAPT라고 한다.

42. NAPT

NAT(Network Address Translation)

내부 네트워크에서 사용하는 사설 IP 주소와 인터넷에서 사용하는 글로벌 IP 주소를 변환하는 기술이다. 그런데 인터넷 동시 접속을 희망하는 호스트가 많을 경우 결국 많은 글로벌 IP 주소가 필요하다.

NAPT(Network Address Port Translation)

NAT의 문제를 해결하기 위해서 등장하였다. 하나의 글로벌 IP 주소로 복수의 컴퓨터를 접속 가능하게 한다. IP 주소 뿐만 아니라 포트 번호도 변환한다. 예를 들어 같은 1.0.0.1 수신 패킷이더라도 송신처 포트 번호가 다르기에 구별할 수 있다.

NAPT 보안 장점

보안 측면에도 장점이 있다. NAT테이블에 없는 변환은 변환되지 않기 때문에 내부 네트워크에 데이터가 흘러가지 않는다.

정적 NAPT

반면 그 보안이 NAPT의 단점이기도 하다. 예를 들어, LAN 내부에서 외부로 공개하고 싶은 서버가 있는 경우가 있다. NAPT 테이블에 저장되어 있지 않은 것은 LAN 내부로 들어오지 못한다. 이때는 NAPT 테이블에 미리 변환을 저장하면 된다. 이것을 정적(동적 반대) NAPT라고 한다.

FTP(File Transfer Protocol)

FTP란 웹페이지에서 사용하는 프로토콜로 파일을 업로드하거나 다운로드를 할 때 사용하는 것이다.

43. 5~7계층

1계층, 2계층, 3계층, 4계층

  1. 1계층에서는 케이블에 신호를 전달한다.
  2. 2계층에서는 네트워크 내에서 데이터를 주고받는다.
  3. 3계층에서는 네트워크 간 데이터를 주고받는다.
  4. 4계층에서는 어떻게 데이터를 주고받는가와 애플리케이션 식별을 담당한다.

5계층 == 세션계층

5계층은 세션계층이라고도 불린다. 애플리케이션 간의 의논의 관리를 한다. FTP같은 경우에는 2개의 커넥션을 사용해서 파일을 주고받는다. 파일 목록을 요청하면 해당 목록을 전송하고, 데이터 전송 타입을 설정하면 전송을 준비하는 등의 대화를 관리한다.

다이얼로그 제어(Dialog Control)

대화가 성립하도록 제어하는 것을 다이얼로그 제어라고 부른다. 이번에는 어떤 쪽이 처리해야 할지를 결정한다.

6계층 == 표현계층

6계층은 표현계층이다. 애플리케이션 목적에 맞는 데이터 형식(문자, 동영상, 음성 등)을 관리한다.

문자 표현방식

문자는 ASCII나 EBCDIC이라는 데이터 형식으로 표현될 수 있다. 문자를 ASCII 데이터 형식으로 표현하는 컴퓨터에서 EBCDIC으로 처리된 문자를 받으면 어떻게 해야 할까? 6계층에서는 변환을 해서 데이터 교환이 가능하게 한다. 그 밖에도 압축이나 암호화를 수행할 수도 있다.

7계층 == 응용계층

7계층은 마지막 계층으로 위에는 애플리케이션밖에 없다. 애플리케이션의 목적에 따라 네트워크 서비스를 제공하는 계층이다. 예를 들어, 홈페이지 열람은 HTTP, 파일 전송은 FTP 와 같이 목적에 따라 프로토콜을 결정한다.

44. OSI 참조 모델과 요약

이렇게 OSI 참조 모델을 살펴보았다. 7개의 계층으로 나뉘어 있고, 각각의 계층은 독립되어 있다. 각 계층은 그 하위 계층의 상황을 전혀 생각하지 않는다.

7계층

네트워크 서비스를 실시한다. 애플리케이션의 목적에 따라 프로토콜을 결정한다.

6계층

문자나 동영상 등의 데이터 형식을 변환한다.

5계층

세션을 관리한다. 애플리케이션 사이의 대화가 성립하도록 제어한다.

4계층

TCP를 통해 정확하고 확실하거나 또는 UDP를 통해 고속으로 데이터를 통신한다. 그리고 포트 번호를 통해 애플리케이션을 식별한다.

3계층

네트워크 간의 통신을 가능하게 한다. 인터넷 작업이다.

2계층

1계층의 전기적 데이터를 사용해서 서로 다른 기기의 데이터 송수신을 한다.

  • 이더넷: LAN에서의 2계층은 이더넷이라는 규칙이 적용된다. 이더넷에서 사용되는 MAC이라는 주소는 벤더코드와 제조업체가 붙인 코드로 이루어져 있다. 이 주소정보를 헤더에 기술해서 송신한다.
  • CSMA/CD: 충돌이 일어나지 않도록 한다.
    • CS(신호 감지) → 누군가가 송신중이라면 송신하지 않는다.
    • MA(다중 엑세스) → 아무도 송신하고 있지 않으면 송신한다.
    • CD(충돌검사) → 송신 후에 충돌이 일어나면 다시 수행한다.

1계층

케이블을 통해 신호를 주고받는다.

profile
👩‍💻

0개의 댓글