3장 TCP/IP

강한친구·2022년 1월 19일
0

Network

목록 보기
2/12

프로토콜

프로토콜이란 1장에서 설명했듯 통신규칙이다. 이 프로토콜은 AppleTalk. IPX 등 다양한 종류가 있고, 그 중 하나가 TCP/IP이다. TCP/IP는 ARPANET 에서 개발하여 현재 대부분의 인터넷에서 사용하고 있는 방식이다. 각각의 네트워크에 접속되는 호스트들은 고유의 주소를 가지고 있어 이 주소를 통해 같은 네트워크뿐만 아니라 다른 네트워크간의 연결 역시 가능해지는것이다.

TCP / UDP

TCP

연결지향 - TCP 3 way handshake (가상 연결)
• 데이터 전달 보증
• 순서 보장
• 신뢰할 수 있는 프로토콜
• 현재는 대부분 TCP 사용

3way handshake

  1. SYN - 접속요청
  2. SYN + ACK
  3. ACK - 요청수락
  4. 데이터 전송

전달 보증

  1. 데이터 전송
  2. 받는쪽이 잘 받으면 받았다는 응답을 보냄

순서 보증

  1. 패킷 1 2 3 순서로 보낸다고 할 때,
  2. 패킷 1 3 2가 온다면
  3. 로직에 따라서 2번부터 다시 보내달라고 요청
  4. 혹은 서버내부에서 알아서 재배열

이는 TCP/IP 패킷안에 이러한 정보들이 있기 때문

UDP

하얀 도화지에 가까움, 기능이 없다
기존의 IP와 비슷하지만 port + checksum 기능이 있다.
에플리케이션에서 추가 작업이 필요하다.

최근 트랜드

최근 http 통신에서 속도향상을 위해 이거저거 최적화를 하면서 각광받고 있음

implementation

TCP/IP전송을 포맷하고 처리하는 실제 작업은 구현이라는 소프트웨어 구현요소가 처리한다. 예를 들어 ms windows의 TCP/IP 구성요소를 사용하면 윈도우가 이를 처리하는것이다.

이러한 TCP/IP는 두가지 기능이 있는데 다음과 같다.

  • 엔드 노드 검증 : 메시지를 전달하는 체인의 양쪽 끝에 있어서 엔드 노드(end node)라고 불리며, 통신을 수신하고 검증하는 책임은 실제 통신하는 두 컴퓨터에 책임이 있습니다. 모든 컴퓨터는 기본적으로 똑같이 작동하며, 의사소통을 관리하는 중앙 시스템은 없습니다.

  • 동적 라우팅: 노드는 여러 경로를 통해 연결되며, 라우터는 현재 상태를 기반으로 경로를 선택합니다. 뒤에서 라우팅(routing)과 라우터(router)에 대해 더 자세히 알아보겠습니다.

TCP/IP의 기본기능

논리 주소 지정

네트워크 어뎁터는 고유의 물리주소를 가진다. 이더넷의 경우 종종 MAC주소라 불리는 물리적 주소가 공장에서 할당되는데, 현재 많은 장치가 물리주소가 변경가능하게 되어 있다.
LAN에서 하드웨어 인식 프로토콜은 물리적 주소를 이용해서 전달하게 된다.

서브넷과 논리주소

하지만 앞 글에서 설명한것처럼 모든 네트워크 어뎁터가 메세지 청취를 대기하고 있을 수는 없다(cpu가 죽는다) 따라서 이러한 물리주소는 더이상 효율적으로 작동하지 않고 이를 해결하기 위해 네트워크 관리자는 네트워크 트래픽을 줄이기 위해 라우터같은 장치로 네트워크를 세분화한다. 이 세분화 과정에서 서브넷이라고 하는 계층적 설계가 필요하다.

IP 주소

IP주소란 인터넷상에서 나를 식별해주는 유일한 주소이다. 따라서 이 주소는 겹치지 않으며, 이 주소를 통해 우리는 통신에 참여하는것이다.

이 IP주소에는
• 네트워크를 식별하는 네트워크 ID 번호

• 네트워크의 서브넷을 식별하는 서브넷 ID 번호

• 서브넷의 컴퓨터를 식별하는 호스트 ID 번호
이 들어간다.

하지만 최근 IP주소의 숫자가 점점 줄어들면서 더 이상 새로운 아이피를 할당할 수 없게 되고있다. 따라서 동일한 아이피를 가지고 NAT이나 PAT 방식을 이용하여 통신을 하는 경우가 늘고있다.

라우팅

라우팅이라는 말이 어렵게 느껴지지만, 사실 그냥 우리집에 있는 모뎀 혹은 공유기가 바로 라우터이다. 외부 대규모 네트워크와 총괄 통신을 담당하며, 동시에 들어온 정보를 올바른 사설 ip로 보내주는 역할을 한다.

이름 확인

네이버의 ip주소는 뭘까? 네이버도 분명 서버가 있을거고 그 서버에 컴퓨터가 있을거고 그 서버에 들어가는 인터넷이 있으니 tcp/ip 시스템에 따르면 분명 ip가 있을것이다. 네이버의 ip는 223.130.195.200이다.
하지만 네이버에 접속할 때, url이라 불리는 dns를 입력해서 들어가지 223.~ 이렇게 들어가지는 않는다. 이러한 과정을 이름확인이라 부르며, DNS 시스템에 속한다.

어플리케이션 지원

몇몇 네트워크 어플리케이션은 동일한 컴퓨터에서 실행될 수 있는데, 이 때, 프로토콜 소프트웨어는 반드시 이 패킷들을 구분해야 한다. 이때 사용되는 개념이 포트이다.

DHCP

자동으로 IP를 배정해주는 시스템이다. DHCP 서버에서 연결된 클라이언트 PC들이 요청하면 그때 보유한 IP리스트에서 하나를 배당해주는 방식이다.

패킷?

Pack + Bucket으로 정보를 보낼 때, 특정한 형태에 담아서 보내는것을 의미한다.
이는 데이터조각으로도 표현된다. 그렇다면 왜 덩어리가 아니라 조각으로 데이터를 보내는것일까?

만약 한 덩어리를 보낸다면 빠르고 편하겠지만, CDMS의 원리상 그런식으로 보내면 대역폭을 많이 차지하고 통신에 지장이 생기기 때문이다.

또한 전송중에 끊어졌을때, 재전송을 하기도 더 원활하다. 서킷방식으로 통으로 보내게되면 다시보내야하지만 패킷은 날라간 부분부터 보내면 되기 때문이다.

패킷의 구분

IP패킷은 헤더로 정의되고, 해더는 다양한 정보를 포함하고 있다.
IP 버전정보, Time to Live, 프로토콜, Header Checksome, 소스주소, 대상주소, 데이터 등이 그 구성요소이다.

0개의 댓글