[네트워크] 7~10강 / 4계층 이론(UDP, TCP)

Izodam·2024년 4월 18일

네트워크

목록 보기
4/5
post-thumbnail

해당 자료는 따라하면서 배우는 IT/네트워크 기초 강의를 보고 정리한 것입니다.

4계층 이론

3계층에서 멀리 있는 컴퓨터의 네트워크 대역을 찾아가고, 2계층에서 그 네트워크의 특정 컴퓨터를 찾아갔었다.

4계층 프로토콜

4계층(전송 계층)에서 하는 일

송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스 제공

  • 프로세스 = 메모리에서 동작중인 프로그램

연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 다중화와 같은 편리한 서비스 제공

잘 알려진 것은 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜 (TCP)이다.

보다 단순한 전송에 사용되는 사용자 데이터그램 프로토콜 (UDP)도 있다.

4계층 프로토콜의 종류

  1. TCP

연결이 된 이후에 전송함

  1. UDP

비 연결 지향형 프로토콜

포트 번호

4계층에서 사용하는 주소

특징

특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용.

네트워크 상에서 통신을 할 때 IP 주소를 바탕으로 해당 서버가 있는 컴퓨터에 접근하게 된다.
하나의 IP에서 여러 애플리케이션을 실행할 경우, 컴퓨터에는 여러 개의 서버가 실행하게 된다.
이때 포트번호를 통해 대상 IP 기기의 특정 애플리케이션의 서버에 접속할 수 있도록 도와줘야 함

하나의 포트는 하나의 프로세스만 사용 가능!

반대로 하나의 프로세스가 여러 개의 포트를 사용하는 것은 가능함.

무조건 지켜야하는 것은 아님. 예를 들어 일반적으로 웹 서비스는 80번 포트를 사용하지만 웹 서비스가 항상 80번 포트를 사용해야만 하는 것은 아님

포트 분류

  1. Well-Known 포트 (0 ~ 1023)
    시스템 사용 번호
    HTTP : 80번, HTTPS : 443번 정도는 알아놔야 함
  2. Registered 포트 (1024 ~ 49151)
    특정 프로토콜이나 어플리케이션에서 사용하는 번호
    오라클 DB, MySQL 등이 사용
  1. Dynamic 포트 (49152 ~ 65535)

    일반 사용자들이 사용

프로그램의 연결 정보

  • 활성 연결 테이블
    • 활성 연결 상태를 나타냄

UDP 프로토콜

UDP 프로토콜

하는 일

사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)는 유니버셜 데이터그램 프로토콜이라고도 함

전송방식이 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 통보없이 누락시키기도 함

오류의 검사나 수정이 필요없는 프로그램에서 수행하는 것으로 가정

구조

  • Length는 UDP 프로토콜 헤더 길이 + 페이로드 길이까지 포함한 것

UDP 프로토콜을 사용하는 프로그램

  1. DNS 서버

    TCP/IP 네트워크 상에서 사람이 기억하기 쉽게 문자로 만들어진 도메인을 숫자로 된 IP 주소로 바꾸는 서버

  2. tftp 서버

    파일을 공유

  3. RIP 프로토콜

    라우팅 정보 공유

실시간 스트리밍 서비스에서 사용

TCP 프로토콜

TCP 프로토콜

하는 일

전송 제어 프로토콜(Transmission Control Protocol, TCP)는 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다.

TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(User Datagram Protocol)을 사용

TCP는 UDP보다 안전하지만 느림 (요즘은 빠름… 우리가 느낄 정도는 아니다…)

구조

  • TCP option은 일반적으로 안붙고, 붙으면 4byte씩,,,→ ipv4와 비슷함 (최소 20, 최대 60)

TCP 플래그

어떤 플래그를 세팅해서 보내느냐에 따라 연결을 할려고 물어보는건지, 대답하려는건지, 연결을 끝내는건지,,, 등등 TCP의 주된 기능이 플래그로 나뉘어짐

  • U
    • 긴급 비트
    • 지금 보내는 데이터가 우선순위가 높은 데이터가 포함되어있다를 나타냄
    • Urgent Pointer와 세트라고 생각하면 좋음
  • A
    • 승인 비트
    • 물어본것에 대한 응답을 할 때 사용하는 플래그
  • P
    • 밀어넣기 비트
  • R
    • 초기화 비트
    • 연결되어있는 상태에서 문제 발생되어서 연결 관계를 새로고침 할 때 사용
  • S
    • 싱크 비트
    • 동기화 비트
    • 상대방과 연결을 시작할 때 사용하는 플래그
    • 처음 보내지고 난 이후부터 둘이 동기화되기 시작함
  • F
    • 종료 비트
    • 데이터 다 주고받은 뒤 연결 끊을 때 사용

TCP를 이용한 통신과정

연결 수립 과정

TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정

  1. 클라이언트가 서버에게 요청 패킷을 보내고
  2. 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
  3. 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다.

이 과정을 3 Way Handshake라고 부름

ACK번호는 받는쪽에서 답장 줄 때 받은 시퀀스 번호 + 1

처음 보내는 것이 아닌 답장의 시퀀스 번호는 받은 ack 번호

처음 보낼 때는 랜덤한 값

데이터 송수신 과정

TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로들르 포함한 패킷을 주고 받을 때의 일정한 규칙

  1. 보낸 쪽에서 또 보낼 때는 SEQ번호와 ACK 번호가 그대로다.
  2. 받는 쪽에서 SEQ 번호는 받은 ACK 번호가 된다.
  3. 받는 쪽에서 ACK번호는 받은 SEQ 번호 + 데이터의 크기

TCP 상태전이도

실선은 클라이언트의 상태 변화

점선은 서버의 상태 변화

  • LISTEN : 포트 번호를 열어놓고 있는 상태
    • 서버가 클라이언트의 요청을 계속 듣고 있는 상태
  • ESTABLISHED : 연결이 서로 수립이 된 상태 (3 way Handshake 상태가 끝난 후)

NAT와 포트 포워딩

NAT

NAT란

Network Address Translation

IP 패킷의 TCP / UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술

패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 함

NAT를 이용하는 이유는 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함

but, 꼭 사설 IP를 공인 IP로 변환하는 데에만 사용하는 기술은 아님

포트포워딩

패킷이 라우터나 방화벽과 같은 네트워크 장비를 가로지르는 동안 특정 IP 주소와 포트 번호의 통신 요청을 특정 다른 IP와 포트 번호를 넘겨주는 네트워크 주소 변환(NAT)의 응용

이 기법은 게이트웨이(외부망)의 반대쪽에 위치한 사설 네트워크에 상주하는 호스트에 대한 서비스를 생성하기 위해 흔히 사용됨

직접 컴퓨터의 IP로 보내는 것이 아니라 공인 IP로 보내고, 그 공인 IP에 포트포워딩이 설정되어 있어야 한다.

profile
dog foot (Developer)

0개의 댓글