상세 컨텐츠

본문 제목

[1.5차시/15기 이병주] TCP/IP

본문

 

패킷통신: 데이터를 패킷이라고하는 작은 단위로 나누어 전송하는 방식

TCP : 전송제어 프로토콜(Transmission Control Protocol)

TCP (전송 제어 프로토콜)은 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜이다.

TCP는 transport layer에서 사용되는 프로토콜

  • 계층적인 구조의 특징
    • 각 계층별 처리 역할이 다르기 때문에, 계층별 간섭을 최소화
    • 특정 계층에서 문제가 생기면, 해당 계층을 살펴보면 되기 때문에, 유지 보수가 편리
    • 다른 계층끼리는 데이터의 전달 과정을 구체적으로 알 필요가 없기 때문에, 데이터의 캡슐화와 은닉이 가능

어플리케이션: 응용프로그램에서 데이터를 처리하는 계층

전송: 어플리케이션에서 넘어온 데이터에 대한 검증, 재전송 등 제어를 담당하는 계층

인터넷: 데이터를 목적지까지 효율적으로 전달

네트워크 엑세스: 실질적으로 데이터를 전송

전송 예시

Application Layer: HTTP request 헤더가 들어감

Transport Layer: TCP 헤더가 들어감

SP : 출발지 포트 번호, DP: 목적지 포트번호

내 컴퓨터 소켓 포트번호, 목적지 포트 번호 모두 알고 있음

Internet Layer: IP 헤더가 들어감

SA : 출발지 IP 주소, DA: 목적지 IP 주소

SA는 알지만 목적지 IP 주소는 아직 모르는 상태, 따라서 도메인 서버에 DNS 쿼리를 보내고, IP 주소를 응답받음

 

 

Network Access Layer: 이더넷 헤더가 들어감

Ethernet 헤더에서 중요하게 볼 것은 SA(출발지 MAC 주소)와 DA(목적지 MAC 주소)

 

여기서 목적지 MAC 주소는, 구글의 MAC 주소가 아닌, 물리적으로 연결된, 패킷이 전달될 라우터(예를 들어, 공유기) 또는 게이트웨이의 MAC 주소를 의미

라우터의 MAC 주소를 알아내기 위해, ARP 프로토콜을 사용

ARP 프로토콜이란?

주소 결정 프로토콜(Address Resolution Protocol)

해당 IP를 그 IP주소에 맞는 물리적인 주소 즉, MAC주소를 가지고 오는 프로토콜

작동원리

  • 송신자는 목적지 물리주소가 필요하므로, 물리주소 요청을 위한 ARP요청 패킷을 브로드캐스트로 전송.(요청 패킷에는 수신자가 수신자 주소를 응답할 때 필요한 송신자 주소가 포함)
  • (브로드캐스트를 하는 이유는 목적지의 물리주소를 모르므로 모두에게 요청함.)
  • 모든 호스트와 라우터는 송신자가 보낸 ARP 요청 패킷을 수신함.
  • 해당되는 수신자만 자신의 논리주소와 물리주소를 넣어 응답 패킷을 유니캐스트로 전송.

TCP는 연결지향형 프로토콜

때문에 송신측과 수신측이 연결되어야함

3 Way Handshaking

 
 
 
100%
 

TCP 헤더에 표시한 플래그들이 사용되며, 이러한 플래그들을 컨트롤 비트라고 부름

여기서 사용되는 것은 SYN(동기화), ACK(승인)

1: 접속

2: 수락

3: 연결

라우팅을 통해 패킷을 목적지 서버에게 전송

패킷은 Network Access Layer의 MAC 주소와 Internet Layer의 IP 주소로 라우팅을 반복해 목적지 구글 서버까지 도착

구글 서버가 받은 패킷 내부 Transport Layer의 목적지 포트 번호에는 80번이 적혀져있음

따라서, Transport Layer는 80번 포트를 사용하고 있는 Application Layer에 데이터를 전송

Application Layer는 HTTP Request 데이터를 받아, “/” 에 매핑된 GET 요청을 처리

이후, 적절한 HTML을 클라이언트에게 응답. 클라이언트는 라우팅을 통해 전달 받은, “www.google.com” 에 해당하는 HTML 을 브라우저에 띄우게 됨

연결종료: 4 Way Handshaking

 
 
 
100%
 

ACK(연결), FIN(종료) 사용

2번이 3번보다 늦게 도착할 수 있다는 문제점이 생김

따라서, 클라이언트는 서버로부터 FIN 패킷을 받고, ACK 패킷을 보낸 뒤에도 일정 시간동안 혹시나 아직 도착하지 않은 잉여 패킷을 기다린다.

UDP 와 TCP의 비교

TCP의 특징

  • 연결 지향 방식이다.
  • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
  • 흐름 제어 및 혼잡 제어.
  • 높은 신뢰성을 보장한다.
  • UDP보다 속도가 느리다.
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식.

UDP(User Datagram Protocol) : 데이터를 데이터그램 단위로 처리하는 프로토콜

연결을 위해 할당되는 논리적인 경로가 없는데,

그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 되는데 이렇게 데이터를 서로 다른 경로로 독립적으로 처리하게 됨.

UDP의 특징

  • 비연결형 서비스로 데이터그램 방식을 제공한다.
  • 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
  • UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
  • 신뢰성이 낮다.
  • TCP보다 속도가 빠르다.

신뢰성보다는 연속성이 중요한 서비스, 예를 들면 실시간 서비스(streaming)에 자주 사용된다.

관련글 더보기

댓글 영역