CodeStates/블로깅 챌린지

[네트워크] 심화 - TCP/IP

novem 2023. 3. 6. 11:29

1. TCP/IP

1-1. 네트워크의 시작

 

  • 지금 우리가 사용하는 IP 기반의 네트워크인 인터넷 프로토콜은 미 국방성에서 1969년 진행했던 아르파넷(ARPANET) 프로젝트에서 시작
  • 기존에 사용되었던 회선교환 방식이 아닌 패킷교환 방식으로 네트워크를 구축

 

1-1.1) 회선교환 방식

 

  • 패킷교환 방식은 기존에 전화에서 사용했던 회선교환 방식의 단점을 보완한 방식
  • 회선교환 중간에서 발신자와 수신자를 연결해주는 오퍼레이터가 존재
  • 다소 비효율적 (즉시성이 떨어짐)
    • 발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결
    • 연결하고 싶은 상대가 다른 상대와 연결중이라면, 상대방은 이미 다른 상대와의 전용선과 연결되어 있기 때문에 그 연결이 끊어지고 나서야 상대방과 연결할 수 있다.
    • 특정 회선이 끊어지는 경우에는 처음부터 다시 연결을 성립해야 한다.

1-1.2) 패킷교환 방식

  • 패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식
  • 각 패킷에는 출발지와 목적지 정보가 있고 이에 따라 패킷이 목적지를 향해 가장 효율적인 방식으로 이동할 수 있다.
  • 특정 회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터를 전송할 수 있다.
  • 인터넷 프로토콜(IP)은 출발지와 목적지의 정보를 IP 주소라는 특정한 숫자값으로 표기하고 패킷단위로 데이터를 전송하게 되었다.

1-2. IP/IP Packet

 

  • 인터넷 통신의 기본이 되는 IP(인터넷 프로토콜)

1-2.1)IP 주소 부여

  • IP 주소를 컴퓨터에 부여하여 통신
  • IP는 지정한 IP주소에 패킷이라는 통신 단위로 데이터를 전달

1-2.2) IP 패킷 정보

 

  • IP 패킷은 우체국 송장처럼 전송 데이터를 무사히 전송하기 위해 출발지 IP, 목적지 IP와 같은 정보가 포함되어 있다.

1-2.3) 클라이언트 패킷 전달

 

  • 패킷 단위로 전송을 하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달
  • 복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있다.

1-2.4) 서버 패킷 전달

 

  • 서버에서 무사히 데이터를 전송받는다면 서버도 이에 대한 응답을 돌려줘야 한다.
  • 서버 역시 IP 패킷을 이용해 클라이언트에 응답을 전달한다.

1-2.5) IP 한계

비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 서버의 상태를 파악할 방법이 없어서 그대로 패킷을 전송한다.
비신뢰성 - 중간에 있는 서버가 데이터를 전달하던 중 장애가 생겨 패킷이 사라질 수 있다.
- 전달 데이터의 용량이 클 경우 패킷 단위로 나눠 데이터를 전달하는데, 패킷들이 중간에 서로 다른 노드를 통해 전달될 수 있어서 패킷의 순서를 보장할 수 없다.

1-3. TCP/UDP

 

  • 네트워크 프로토콜 계층은 OSI 7계층과 TCP/IP 4 계층으로 나눌 수 있다.
  • IP 프로토콜 보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에, IP 프로토콜의 한계를 보완할 수 있다.
  • TCP/IP 4 계층은 OSI 7 계층보다 먼저 개발되었다.
  • TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지는 않다.
  • 실제 네트워크 표준은 업계표준을 따르는 TCP/IP 4 계층에 가까움

1-3.1) OSI 7계층과 TCP/IP 4계층

 

HTTP 메시지가 생성되면 Socket을 통해 전달

소켓(Socket)? 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, 네트워크 환경에 연결할 수 있게 만들어진 연결부

1-3.2) TCP/IP 패킷 정보

 

 

  • TCP 세그먼트에 포함되는 정보
    • IP 패킷의 출발지 IP
    • 목적지 IP 정보를 보완할 수 있는 정보
    • 출발지 PORT
    • 목적지 PORT
    • 전송 제어
    •  순서
    • 검증 정보

 

1-3.3) TCP 특징

  • 전송 제어 프로토콜(Transmission Control Protocol)이다.
  • 연결 지향 - TCP way handshake (가상 연결)
    •  TCP 3 way handshake
    • 3 way handshake를 사용하는 연결지향형 프로토콜

  • 연결 방식
    • 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보냄
    • 서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN가 설정된 패킷을 발송
    • 클라이언트가 다시 ACK으로 응답하기를 기다림
    • 클라이언트가 서버에게 ACK을 보내면 이 이후로부터 연결이 성립되며 데이터를 전송할 수 있음
    • 만약 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 때문에 데이터를 보내지 않음
    • 현재에는 최적화가 이루어져 3번 ACK을 보낼때 데이터를 함께 보내기도 함
  • 데이터 전달을 보증한다.
    • 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려줌
  • 순서를 보장한다.
    • 만약 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있다.
  • 같은 계층에 속한 UDP에 비해 상대적으로 신뢰할 수 있는 프로토콜 신뢰할 수 있는 프로토콜

1-3.4) UDP 특징

  • 사용자 데이터그램 프로토콜 (User Datagram Protocol)
  • IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
    • 체크섬(checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법
  • 하얀 도화지에 비유(기능이 거의 없음)
    • 커스터마이징이 가능하다는 장점
  • 비 연결지향
  • 데이터 전달 보증 하지 않음
  • 순서 보장 하지 않음
  • 단순하고 빠름
  • 신뢰성보다는 연속성이 중요한 서비스(ex. 실시간 스트리밍)에 자주 사용됨
TCP UDP
연결지향형 프로토콜 비 연결지향형 프로토콜
전송 순서 보장 O 전송 순서 보장 X
데이터 수신 여부 확인함 데이터 수신 여부 확인하지 않음
신뢰성 높지만 속도 느림 신뢰성 낮지만 속도 빠름