본문 바로가기
망 (Network)

[네트워크] 전송 계층

728x90

TCP : 전송계층의 대표 프로토콜, 네트워크 계층과 응용 프로그램의 연결을 담당

  • 프로그램들은 TCP를 통해서 인터넷 이용 가능
  • 여러 프로그램들이 데이터를 보낼 수 있는 인터페이스를 만들어 주는 것
  • 인터페이스가 TSAP (Transport Service Access Point)

  • 전송계층 데이터의 단위 TPDU (Transport Protocol Data Unit)

  • 일련번호와 ACK 사용 : 전송 계층은 목적지에 도착한 데이터가 순서가 뒤바뀌거나 사라진 것은 없는지 확인
  • 슬라이딩 윈도우 프로토콜을 사용하여 혼잡 제어

TCP와 IP 차이

  • IP: 목적지까지 데이터 전송만 담당하며, 연결 개념이 없음
  • TCP: 응용 프로그램 간의 연결 설정과 해제 지원, 데이터를 신뢰성 있게 전송하도록 보장
전송 계층 주요 작업 설명
분할과 병합 데이터가 큰 경우 자르고, 받는 쪽에서 원래 크기로 합쳐줌
멀티 인터페이스 제공 포트와 소켓
데이터의 무결성 일련번호와 ACK 사용
혼잡제어 슬라이딩 윈도우 크기 조절
연결 설정 및 연결 해제 3방향 핸드쉐이크

 

포트와 소켓

클라이언트 : 서비스를 요청하는 컴퓨터 ex) 웹 브라우저

  • 웹브라우저 : HTTP 프로토콜을 사용해 서버에 웹 페이지 요청
  • 익스플로러, 크롬, 파이어 폭스 등

서버 : 서비스를 제공하며 클라이언트 요청을 대기

  • 데몬(daemon): 항상 작동하며 서비스를 제공하는 프로그램
  • 웹 서버의 데몬: HTTPD(Apache, Tomcat, IIS 등)

HTTP: 하이퍼텍스트(웹 페이지) 전송 프로토콜

 

FTP: 파일 전송 프로토콜

SMTP: 이메일 전송 프로토콜

  • 각 프로토콜의 데몬 설치로 서버 구축 가능 (예: HTTPD, FTPD, SMTPD)
  • 서버는 특정 하드웨어를 가리키는 단어가 아니라 데몬이 설치된 컴퓨터를 지칭하는 단어
  • 서버의 역할을 하기 위해서는 성능이 높은 CPU와 24시간 안정적으로 작동하는 내구성이 필요함. 그래서 고사양의 컴퓨터를 ‘서버급 컴퓨터’라 부름

 

포트 : 프로그램 간 데이터 통신을 위한 전송 계층의 주소, 전송 계층이 여러 프로그램에게 제공하는 주소인 동시에 멀티 인터페이스

  • TSAP (Transport Service Access Point) = 포트
  • 범위: 0~65535

 

 

Well-known 포트 번호: 자주 사용하는 데몬이나 중요한 프로그램의 포트 번호를 고정

클라이언트가 HTTPD(웹 데몬)와 처음 통신할 때, HTTPD의 포트 번호를 알아야 통신 할 수 있음 ➔ 만약 HTTPD의 포트번호도 운영체제에 의해 임의로 할당된다면, 매번 서버에게 물어 봐야 함서

서비스 포트번호 비고
FTP 21(제어), 20(데이터) FTP의 경우 21번 포트로 접속하여 작업을 하는데 실제 데이터는 20번 포트로 전송됨
telnet 23 원격지 로그인에 사용
SMTP 25 이메일 전송 프로토콜
DNS 53 도에민 이름 - 주소 변환
DHCP(BOOTP) 67, 68 동적 IP 주소 할당
HTTP 80 웹 시스템
HTTPS 443 HTTP의 암호 프로토콜
  • URL 형식은 ‘프로토콜://도메인 이름:포트 번호’
  • http://naver.com:80이 정확한 주소 ➔ http:// 및 포트번호 :80은 생략가능

 

소켓(Socket) : 멀티탭, 같은 포트에 연결되어 여러 명을 동시에 처리할 수 있는 소프트웨어적인 접속장치

  • 80번 포트에 소켓을 연결해 여러 사용자를 동시 처리
  • 소켓 프로그래밍 : 네트워크를 시용한 프로그래밍

  • 소켓과 서버 부하:
    • 동시 접속자 수는 준비된 소켓의 개수로 결정
    • 소켓이 부족하면 서비스 지연, 과도하면 서버 성능 저하
    • 서버 다운 사례: 갑작스런 트래픽 증가로 소켓 부족

 

연결설정의 어려움

연결설정 : CR(Connection Request)를 보냄으로서 이루어짐

문제 : CR을 보냈다고 해서 호스트 B가 연결을 허락한 것은 아님 이런 상태에서 데이터가 도착하게 되면, 호스트 B는 해당 데이터를 무시

 

CR_ACK : 호스트 A는 CR을 보내고, 호스트 B는 연결을 승낙한다는 뜻으로 CR에 대한 응답 메시지

문제 : 호스트 B가 보낸 CR_ACK가 정상적으로 전송되었는지를 호스트 B는 알 수 없음 ➔ 호스트 B가 CR_ACK를 보낸 직후에 도착하는 데이터가 호스트 A가 보낸 데이터라는 보장이 없음

3방향 핸드쉐이크 : 호스트 A는 CR을 보내고, 호스트 B는 CR에 대한 허락의 의미로 CR_ACK를 보냄 ➔ 호스트 A는 CR_ACK를 받았다는 증거로, CR_ACK_ACK를 보냄, CR ➔ CR_ACK ➔ CR_ACK_ACK, 3번의 합의를 거쳐 연결

 


 


DR : 연결을 해제할 때 서로간의 합의

문제 1: 호스트 A는 계속적으로 호스트 B에게 데이터를 보내는 중간에 호스트 B가 일방적으로 DR을 보냄, 해당 데이터 처리 못함

문제 2: 호스트 A가 연결해제를 위해 보낸 DR이 사라진 경우, 이때 악의적인 사용자로부터 위조된 데이터가 호스트 B에 도착 ➔ 호스트 B는 호스트 A가 보낸 DR이 사라졌다는 것을 알지 못하기 때문에 데이터를 처리 할 수 밖에 없음

 


TCP에서 실제로 연결 설정이 이루어지는지 과정

CR = SYN

DR = FIN


  • SYN 세그먼트는 데이터를 전달하지는 않지만 하나의 순서 번호를 소비함
  • SYN + ACK 세그먼트는 데이터를 전달하지는 않지만 하나의 순서 번호를 소비
  • ACK 세그먼트는 데이터를 전달하지는 않는 경우에는 순서 번호를 소비 하지 않음
728x90