4계층

썹스·2022년 8월 29일
0

네트워크

목록 보기
9/11

1. 4계층에서 하는일

전송 계층(Transport layer)은 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공한다.

전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 그리고 다중화와 같은 편리한 서비스를 제공한다.

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

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


2. 포트 번호(Port number)

포트 번호(Port number)는 특정 프로세스와 특정 프로세스가 통신하기 위해 사용한다. 하나의 포트는 하나의 프로세스만 사용 가능하며, 하나의 프로세스가 여러 개의 포트를 사용하는 것도 가능하다.

포트 번호는 일반적으로 정해져 있지만, 무조건 지켜야 하는 것은 아니다. 간단한 예로 일반적으로 웹 서비스는 80번 포트를 사용하지만 웹 서비스가 항상 80번 포트를 사용해야만 하는 것은 아니다.

아래의 테이블은 전 세계적으로 유명한 Well-Konown 포트이다.

서비스 이름포트 번호
FTP20번, 21번
SSH22번
TELNET23번
DNS53번
DHCP67번, 68번
TFTP69번
HTTP80번
HTTPS443번

3. TCP 프로토콜

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

TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접송형 사용자 데이터그램 프로토콜인 UDP를 사용한다.

  • TCP는 신뢰성이 있는 데이터 전송을 지원하는 연결 지향형 프로토콜이다.
  • 흐름제어, 혼잡제어, 오류제어를 지원하고 있다.
  • UDP보다 속도가 느리다.

3-1. TCP 프로토콜의 구조


Source Port : 출발지 포트 번호
Destination Port : 목적지 포트 번호
Sequence Number : 세그먼트 데이터의 순서번호
Acknowledgment Number : 데이터를 수신 받은 뒤 바로 다음에 수신받을 데이터의 순서 번호
Offset : TCP 헤더의 전체 길이
Reserved : 미래를 대비하여 남겨둔 필드

TCP Flags

  • URG: 긴급한 데이터의 우선순위를 높여 긴급 전달하는 플래그
  • ACK: 송신측에게 데이터를 잘 받았다고 알려주기 위한 플래그
  • PSH: 버퍼 없이 즉시 전달하는 플래그
  • RST: 비정상적인 세션을 끊기 위해 연결을 재설정하는 플래그
  • SYN: 통신 시작 시 세션을 연결하기 위한 플래그
  • FIN: 전송할 데이터가 없을 때 연결을 종료시키는 플래그

Window : 남아있는 TCP의 버퍼 공간 의미한다.
Checksum : 헤더 또는 프로토콜의 손상 및 오류 여부를 확인
Urgent Pointer : 어디서부터 어디까지가 긴급 포인터인지를 알려준다.

3-2. TCP를 이용한 통신과정(연결 수립 과정)

TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정은 아래와 같으며, 아래의 3개 과정을 "3 Way Handshake"라 부른다.
1. 클라이언트가 서버에게 요청 패킷을 보낸다.
2. 서버가 클라이언트의 요청을 받아들이는 패킷을 보낸다.
3. 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다.

3-2. TCP를 이용한 통신과정(데이터 송수신 과정)

TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고, 받을 때의 일정한 규칙은 아래와 같다.
1. 보낸 쪽에서 또 보낼 때는 SEQ, ACK 그대로
2. 받는 쪽에서 SEQ는 ACK 번호가 됨
3. 받는 쪽에서 ACK는 받은 SEQ 번호+ 데이터 크기

3-4. TCP 상태전이도


LISTEN : 포트 번호를 사용하고 있는 상태
ESTABLISHED : 연결 수립된 상태


4. UDP 프로토콜

사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 유니버셜 데이터그램 프로토콜(Universal Datagram Protocol, UDP)이라고도 일컫는다.

UDP의 전송방식은 너무 단순하기에 서비스의 신뢰성이 낮고, 데이터그램의 도착순서가 바뀌거나, 중복되거나, 심지어 통보 없이 누락되는 경우도 있다.

UDP는 일반적으로 오류의 검사와 수정이 필요 없는 프로그램에서 수행할 것으로 가정한다.

  • 데이터를 데이터 그램 단위로 처리하는 프로토콜이다.
  • 신뢰성이 낮다.
  • 속도가 빠르다.

4-1. UDP 프로토콜의 구조


Source Port : 출발지 포트 번호
Destination Port : 목적지 포트 번호
Length : UDP헤더와 데이터를 포함한 전체 길이를 (Byte 단위로 표시)
Checksum : 헤더 또는 프로토콜의 손상 및 오류 여부를 확인

4-2. UDP 프로토콜을 사용하는 프로그램

  • DNS 서버
    도메인을 물으면 IP를 알려준다.

  • tftp 서버
    UDP로 파일을 공유

  • RIP 프로토콜
    라우팅 정보를 공유



Reference

따라하면서 배우는 IT_네트워크 기초(개정판)

profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글