ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP/IP
    Network 2021. 6. 30. 14:15

    네트워크 아크텍처중 하나로 지금은 TCP/IP만 사용됨

    계층구조 

    • 애플리케이션층
      • HTTP, SMTP, DNS, DHCP 등의 프로토콜
      • 애플리케이션에서 다루는 데이터 형식, 절차 결정
      • 문자, 이미지 등의 데이터를 표현 
    • 트랜스포트층
      • TCP / UDP (프로토콜) - 애플리케이션에 데이터 할당/배분
      • TCP
        • 데이터 송수신하는 애플리케이션 간의 통신이 정상적으로 이루어졌는지 확인함
        • TCP 헤더에는 포트 번호를 포함하여 애플리케이션의 프로토콜에 데이터를 배분함
        • 출발지, 목적지 포트가 포함됨(포트는 같은 IP내 프로세스 구분(애플리케이션 구분)을 위함)
        • 3 Way Handshake
          1. TCP 커넥션 맺기
          2. 데이터 송수신
            1. 애플리케이션 프로토콜 헤더와 TCP 헤더를 추가후 TCP 세크먼트를 전송(크기가 크면 분할하여 여러개의 세크먼트 전송)
            2. 데이터가 도착하면 수신확인(ACK- 전송된 데이터 만큼 더해줌)을 송신자에게 보내서 데이터가 잘 도착했음을 확인/ 실패시 재전송
          3. TCP 커넥션 끊기
        • A->B (syn) seq:1000, ack: - -내가 보내는 패킷에 1000을 부여하니 수신하면 다음에는 패킷 1001을 전달요청하시오.(데이터 1000 bytes를 추가하면 2001로 요청하시오)
        • B->A (syn) seq:2000, ack:1001 - seq:내가 보내는 패킷에 2000을 부여하니 수신하면 다음패킷에 2001을 부여하라고 요청하시오, ack: 1000은 잘 받았으니 다음에 1001를 부여한 패킷을 보내시오. 
        • A->B (syn) seq:1001, ack:2001 
        • 데이터 분할 (순서 보장, 데이터 전달 보장)
          • 데이터 분할 시, 전송 시 시퀀스 번호와 ACK 번호를 통해서 확인, 조립함
          • 큰 데이터 =
            • HTTP 헤더 + 데이터 =>
            • TCP헤더 + HTTP헤더 + 데이터조각1 / TCP헤더 + 데이터조각2 / TCP헤더 + 데이터조각3 로 분할하여 전송(TCP 헤더의 시퀀스 번호로 분할된 데이터 순서 알수 있고, HTTP헤더+데이터조각1, 데이터조각2, 데이터조각3 은 각각 MSS(Maximum Segment Size)의 표준 크기 1460바이트임 
          • 순서가 맞지 않으면 다시 보냄(1,2,3->1,3,2 => 2부터 다시 보내)
        • 참고) 이더넷헤더 + IP헤더(20바이트) + TCP헤더(20바이트) + HTTP헤더,애플리케이션데이터(1460바이트) 로 이더넷헤더를 제외하여 1500바이트가됨
      • UDP
        • 데이터그램
        • 상대방의 애플리케이션의 동작여부는 확인하지 않고 데이터 송신만함(전숑 효율이 좋지만 신뢰성은 낮음)
        • 데이터를 쪼개는 기능이 없어 애플리케이션층에서 쪼개야함
        • 예) IP전화 = 일반적으로 1초를 50개로 쪼개서 보냄
    • 인터넷층
      • IP, ICMP, ARP
      • 엔드투엔드 통신 = 다른 네트워크에 존재하는 목적지까지 데이터를 전송하는 것
      • 라우터 = 다른 네트워크끼리 연결하고 데이터를 전송하는 기기
      • 엔드투엔드 통신에 이용하는 프로토콜이 IP 이고, 라우팅(라우터에 의한 네트워크 간의 전송)을 통해 통신
      • ICMP (Internet Control Message Protocol) = 내가 보낸 메시지를 목적지에서 그대로 보내주세요 하는 요청을 보냄(Ping 과 같이 목적지에 데이터 전송이 가능한지 확인)
        • ICMP 의 주 기능은 에러 리포트(도달 불능 메시지), 진단 기능
      • ARP (Address Resolution Protocol) = IP를 MAC 주소를 대응시킴(=주소해석)
        • 이더넷 헤더에 MAC주소를 지정해야하므로 MAC 주소가 필요함 
        • APR 요청을 브로드캐스트해 목적 MAC 주소를 질의하고 목적지에서 자신의 IP임을 확인하고 ARP 캐시를 갱신하여 출발지의 IP-MAC 주소를 업데이트 하고, MAC 주소를 출발지로 보내서 출발지에서도 동일하게 ARP 캐시를 갱신하여 목적지의 IP-MAC주소를 업데이트함
      • IP 헤더에는 출발지 IP와 목적지 IP 주소가 32 비트로 각각 할당되고, IP 헤더가 데이터 + HTTP 헤더 + TCP 헤더에 더해져서 IP 패킷이 되고, 라우터가 IP 패킷을 전송하는 것을 라우팅이라 함
    • 네트워크 인터페이스층
      • 이더넷, 무선 LAN(WIFI)
      • 같은 네트워크 안에 데이터 전송(예, 같은 네트워크 안에 존재하는 PC1, PC2가 레이어2 스위치로 구성되어(연결되어) 있는 경우 레이어2 스위치를 통해 PC2에 데이터 전송)

    데이터 송수신 규칙

    • 각 계층에서는 캡슐화/역캡슐화가 일어남
      • 각 계층에서 프로토콜 헤더를 추가하는 캡슐화 헤더를 보고 프로토콜을 처리하는 역캘슙화가 일어남
      • 한 예로 웹브라우저 데이터 + HTTP 헤더(애플리케이션 계층) -> + TCP 헤더(트랜스포트층) -> + IP 헤더(인터넷층) -> + 이더넷 헤더(+FCS)가(네트워크 인터페이스층) 추가됨
    • 수신 순서
      • PC에 데이터가 물리적 신호로 도착하면 0,1,로 데이터를 변환하고, 이더넷 헤더를 참조해 자기 앞으로 온 데이터인지 확인 + FCS 데이터 오류 없는지 확인
      • 자신에게 온 게 맞다면 이더넷 헤더와 FCS를 제거한 후 IP 헤더를 통해 자신에게 온 데이터인지 확인
      • 자신에게 온 게 맞다면 IP 헤더를 제거한 후 TCP 헤더를 참조해 어느 애플리케이션 데이터인지 확인
      • 해당 애플리케이션으로 데이터를 전송하여 HTTP 프로토콜에 맞게 처리함

    데이터를 부르는 방식 - (각 계층에서 불러지는 이름으로, 이름에 따라 어느 계층을 주목해야하는 지 명확해짐)

    • HTTP 메시지 - 애플리케이션층
    • TCP 세그먼트 / UDP 데이터그램 - 트랜스포트층
    • IP 패킷 - 인터넷층
    • 이더넷 프레임 - 네트워크 인터페이스층

    IP 주소

    • IP 주소는 8비트씩 0~ 255 사이의 10진수이고 4개의 숫자로 32비트이고 . 을 사용해 구분함 = 192.0.0.1
    • IP 주소는 통신 상대가 되는 호스트(인터페이스)를 식별하기 위한 정보이고, IP 주소는 인더넷 등의 인터페이스와 연관지어 설정됨. 

    데이터 전송 대상(한 곳, 여러곳)

    • 유니캐스트: 단 한곳으로 데이터 전송. IP주소가 유니캐스트 IP주소 / 같은 데이터를 여러곳으로 보낼때 이 방식을 반복하는 것은 효율이 좋지 않아 브로드캐스트와 멀티캐스트 사용
    • 브로드캐스트: 같은 네트워크 상에 똑같은 데이터 전송
    • 멀티캐스트: 특정 그룹에게 데이터 전송 - 특정 그룹은 다른 네트워크에 포함될 수 있음
    • 유니캐스트 IP주소: 네트워크부 + 호스트부
      • 서브넷마스크: 네트워크부와 호스트부를 구분해줌 네트워크부는 1 호스트부는 0
      • 서브넷마스크가 255.255.255.0 일때 255.255.255 가 네트워크부, .0 이 호스트부임을 알수 있음 
      • 예) 192.168.1.0/24 는 결국 192.168.1.0이고 이는 네트워크 주소를 나타냄 192.168.1.255 는 해당 네트워크주소 + 호스트부분이 255 = 브로드캐스트 IP 임 IP 주소들은 192.168.1.1/24,   192.168.1.2/24 등임 됨
    • 브로드캐스트 IP 주소: 255.255.255.255
    • 멀티캐스트 IP 주소: 224.0.0.0 ~ 239.255.255.255

    네트워크 접속

    • 물리적인 접속과 논리적인 접속의 두가지가 일어나고, 물리적 접속은 네트워크 인터페이스층, 논리적인 접속은 인터넷층임
    • 예를 들어 호스트 IP 192.168.1.1/24를 설정하면, 192.168.1.0/24 네트워크에 접속하여 TCP/IP 사용한 통신이 가능해짐

    공인주소/사설주소

    • 공인주소
      • 공인 IP 주소 = 퍼블릭 IP 주소 = 인터넷을 이용(통신하기 위해)하는 IP 주소), ISP에서 할당함
    • 사설주소
      • 사설 네크워트에서 사용하며, 외부 인터넷으로 통신하려면 NAT이 필요함(192.168.0.X)
      • 사설주소의 범위
        • 10.0.0.0 ~ 10.255.255.255
        • 172.16.0.0 ~ 172.31.255.255
        • 192.168.0.0 ~ 192.168.255.255
      • IP헤더에 출발지 주소가 사설 주소/ 목적지 주소가 공인 네트워크 주소로 되어 있으면 목적지 주소로 요청을 잘 가지만, 응답으로 올때의 목적지IP 주소가 사설 주소가 되어 이 경우 IP 패킷은 폐기되어 버려짐(즉, 서버로 요청은 할 수 있으나 응답은 오지 않음)
      • 주소 변환이 필요함(NAT)

    NAT

    1. 사설 네트워크에서 인터넷으로 요청을 전송할때 출발지의 IP주소를 변경(사설주소->공인주소)
    2. 라우터(송신, 수신)는 주소 변경에 대한 정보를 NAT 테이블에 보존해둠
    3. 응답이 라우터에 도착하면 NAT 테이블을 보고 목적지 IP 주소를 변환함

    'Network' 카테고리의 다른 글

    DNS  (0) 2022.01.27
    TCP/IP - Flow Control, Congestion control  (0) 2021.07.06
    프록시와 게이트웨이  (0) 2021.07.06
    네트워크 기본 개념  (0) 2021.06.30
    보안  (0) 2021.06.29
Designed by Tistory.