상세 컨텐츠

본문 제목

TCP/IP illustrate 1

Computer Science/Network

by yellowmarine 2020. 7. 20. 12:51

본문

TCP/IP illustrate

1 . Introduction

1.1 Architecture principle

  • Protocol : diplomatic 한 사건을 처리하는 공식적인 절차 혹은 시스템
  • primary goal:
    • 네트워크 혹은 라우터를 잃어버려도 인터넷 연결이 지속되어야한다.
    • 인터넷은 여러가지 타입의 소통 수단을 제공해야한다.
    • 인터넷 구조는 다양한 네트워크에 적응할 수 있어야한다.
    • 인터넷 구조는 자원의 분산 관리 시스템을 허용해야한다
    • 자원의 효율적이여야 한다.
    • 최소의 노력으로 호스트 접근을 허용해야한다.
    • 사용 자원에 대한 책임이 필요하다.

1.1.1 packets, connection, datagram

  • 전통적인 전화와 같은 통신 방법은 하나의 길을 만들어 통신 회선을 만들어 주고 그 회선을 독점적으로 소유하는 connection oriented 방법을 사용하였는데 이를 ciurcit이라고 한다.
  • 위 방법이 효율적이지 못하고 latency가 높았어서 packet swithching이라는 방법이 나왔다.
  • Packet : 독자적으로 전달되어지는 디지털 정보로써 전달하고자 하는 데이터를 쪼개는 단위
  • 패킷을 전달하기위해 네트워크를 점유해야 한다고 할때 일어 날 수 있는 문제들을 해결하기 위해 multiplexing 방법이 나타남
    • 문제점 ex) 신호가 동시에 전달 될 경우 데이터를 전달 받지 못하는 경우가 나올 수 있음, 혹은 하나의 host 혹은 client가 독점 점유 할 수 있음.
    • 해결 방법
      • time division multiplexing : 일정 시간 마다 하나의 host의 데이터를 받는 다고 생각하고 전송
      • statistical multiplexing : 네트워크 자원을 많이 사용하는 host에 대해 조금 더 많은 시간을 할당하고 사용량이 줄어들면 줄이는 식의 방법
  • 초기의 Packet switch는 전달하고자 하는 정보를 switch에서 알았다. 하지만 datagram이 나오면서 비연결형 네트워크가 형성 되었다
  • Datagram : 데이터를 전달하고자 하는 장소 및 전달 주체의 정보를 담고 있는 큰 단위의 packet이라고 생각하자.
  • 메세지를 보낼때 메세지의 원래 크기를 담고 복구하는 방법의 message boundary형 protocol과 그저 일정 크기로 보내는 비정형 방식이 존재한다.

1.1.2 End-to-End and Fate sharing

  • End-to-end principle : 정확성과 완결성은 오로지 어플리케이션 혹은 엔드 유저만이 확인 할 수 있다? 쉽게 생각해보자
    • 예를 들어 우리가 OSI 7계층을 나눈 이유를 생각해보자 -> 각 계층을 넘어서는 일은 하지 않는다. 위로든 아래로든 logical하게 연결된 계층끼리 해결한다. -> 이렇게하면 각 계층에 대한 성능을 최대한으로 끌어낼 수 있다.
    • 좀더 들어가보면 보통적으로 전송 내용에 관한 부분을 5,6,7계층으로 넘겨 버리는걸 보면 좀더 이해가 빠를 수도 잇을거 같다
  • Fate sharing : 간단하게 분산 환경에서 객체의 상태 값들은 지속적으로 체크하고 공유해야한다는 원칙이다.
    • ex) 모바일 네트워크 상에서 특정 AP에서 데이터를 전송 받다가 다른 AP로 넘어갔을경우 스위치는 AP 값이 바뀌는것에 대한 정보를 공유하고 재설정 하여야한다.

1.1.3 Error control and flow control

  • Error control : 하드웨어 문제, 네트워크 대역 문제, 전송도중 변형된 데이터 전송 등과 같은 error에대한 처리 방법을 칭한다.
  • 보통적으로 이러한 문제들을 해결하기 위해 재전송을 하게 되는데 이러한 작업은 매우 오버헤드가 큰 작업이고 어찌보면 불필요한 작업을 한번 더 하게 되는 결과를 낳는 것이므로 이를 최대한 줄이고자 함.
  • 해결 방법으로 체크섬 혹은 erroe detection code나 flag같은거를 많이 넣는다.
  • 이를 해결하기 위해 flow control과 같은 방법을 쓴다. 각 컴퓨터의 사양도 다르고 처리 속도도 다르기 때문에!

1.2 Design & implementation

1.2.1 layering

  • 각각의 layer가 가진 특성 별로 책임을 지는 형태.

  • Application : host or client가 실행하고자 하는 작업.

  • presentation : 데이터를 표현하고자 하는 방법 + 암호화 방법.

  • session : 여러 연결에 대해서 연결의 지속 혹은 갱신에 대한 부분을 담당.

  • transport : 네트워크 연결 방법을 정해주는 곳 (TCP/ UDP) -> 하나의 네트워크에 여러 프로세스 접근을 가능하게 한다고 보면 될듯.

  • Network : ip packet을 통해 통신을 할 수 있게해준다. -> link를 통해서만 하게 되면 table이 상상을 초월하게 될 것이고 느려짐 그걸 방지 하는게 홉을 늘리더라도 network layer 쓰는 이유

  • Link : MAC address 를 통한 통신 방법층

1.2.2 Multiplexing, Demultiplexing and Encapsulate

  • multiplexing을 통해 여러 인스턴스가 똑같은 프로토콜 작동이 가능하며 하나의 인프라안에서 여러 프로토콜이 작동 가능하게 한다.
  • 그리고 이러한 데이터에 각 계층을 통과 할때마다 헤더 정보가 붙게되고 아래 혹은 위에서 자기 자신의 층 외의 정보에 관심을 안가져도 되도록 하는게 캡슐화. -> 요즘에는 trailer 붙이는 경우는 없다고 봐도 된다는데 잘 모르겟다.. -> 굳이 트레일러 쓸 필요성을 못느낄 듯 한데.

  • 이 그림을 통해 하나의 인프라안에서 여러가지 protocol이 공존하는것을 볼 수 있다. 또한 하나의 네트워크 상에서 demux하면서 다르게 찾아가는 것도 볼 수 있다. 그리고 하나 더 체크 각 logical한 연결은 하나의 독립적인 연결 처럼 볼 수 있다.

1.3 The architecture and protocols of the TCP/IP suite

1.3.1 ARPANET

link
  • ARP : IP주소를 통해 MAC address를 알게 해주는 protocol이다. 주로 ethernet 혹은 wifi에서 사용
    • 1) 보내고자 하는 곳의 IP의 주소를 담은 ARP request 패킷을 브로드캐스트 한다.
    • 2) 해당 IP에 맞는 host에서 자신의 MAC address를 포함한 ARP reply 패킷을 브로드캐스트한 host에게 보낸다.
  • 생각해보자
    • ARP 도 브로드 캐스트 방법이고 DHCP도 브로드 캐스트 방법인데 먼저 일어나야 할 방법은 DHCP일거야 나의 ip가 필요하니까?
    • 그런데 GWR에 갔는데 얘의 테이블에 정보가 아무것도 없다면 이걸 어떻게 채울거야??? ARP겠지?? 각각의 중계 라우터들이 DHCP서버를 가지지는 않을테니까?
    • 그럼 여기서 또 의문 ARP는 ip주소값이 있어야하는데... 이건 또 뭐야..... 각각의 라우터들도 고정 ip는 아닐텐데... 이 중계 라우터들을 관리하는 무언가가 또 있나..?
    • 그리고 마지막으로 DHCP는 특정 port번호를 할당 받고 쓰는것으로 아는데 이건 layer violation아닌가..?
network
  • 데이터의 단위가 너무 클때 데이터는 네트워크에서 지정한 MTU길이 안에서 데이터를 전송을 한다. 이렇게 되는 경우 큰 데이터를 작은 단위로 쪼갠 것을 fragment라고 하고 현재 기준은 1500바이트를 넘지 않도록 한다.
    • 굳이 이렇게 1500바이트로 제한을 두는 이유가 뭘까?
      • 만약 데이터를 쪼개지 않고 바로 보낼경우 오버헤드도 적고 전송 편의성면에서 많은 이점이 있다.
      • 하지만 데이터를 제대로 전송하지 못했을 경우 retransmissin 할때 너무 큰 코스트가 발생한다.
  • 이러한 fragment들은 destination에 도착 한후 다시 합쳐지게 된다.
    • fragment 된 것들은 순서번호와 길이 offset 그리고 flag 등으로 reassemble.
    • 그리고 더 상위 layer에 대한 정보는 한번만 받고 더이상 없음.
    • 리눅스 sk_buff 랑 연관 지어서 생각을 해보면 좋을듯 한데 sk_buff는 헤더 그 자체라고 보는게 맞는거겠지?
  • IP를 나타내는 방식은 IPv4(32bit), IPv6(128bit)가 존재를 하고 각각의 표현 방식에 따라 관리 protocol이 매우 상이하다.
  • 데이터를 다음 hop(ex. Network -> link layer)으로 보내는 작업을 forwarding이라고 한다.
    • 방법에 따라 unicast, broadcast, multicast가 존재한다.
  • 이러한 방법들의 error 체크를 위한 방법으로 ICMP, IGMP등이 존재한다.
transport
  • 연결 방식에 따라 TCP, VC, UDP 등이 존재한다.

  • 네트워크의 사용자가 많아 데이터 전송이 어려워지는 경우가 많아진다. 이를 해결하기 위해 Congestion control이 필요

    • DDCP를 통해 송신자들을 제한하고 data 흐름을 원활하게 한다.
    • SCTP: TCP와 UDP를 합친 신뢰성 있는 전송 기법이라는데 뭔가 아예 좀 다른 느낌이다.

     

1.3.2 Multiplexing, Demultiplexing, and Encapsulation in TCP/IP + 1.3.3 port number

  • 위의 그림 1-6을 보면 demux가 어떻게 일어나는지 볼수 있다.
  • 먼저 MAC address를 통해 ethernet에 들어오게 된다.
  • 두번째로 각 IP주소를 통해 해석이 진행된다.
  • 그 후 연결 방식에 따라 특정 연결을 진행하게 된다.
  • 마지막으로 port 번호를 통해 특정 서비스에 연결해준다.
    • 특정 port 번호는 기본적으로 제공하는 서비스를 제공하기 위해 이미 고정화 되어있고 root권한자 외에는 접근이 불가하다.
    • port는 간단하게 생각하면 특정 프로세스를 연결한다고 생각하자.

1.3.4 DNS

  • 실제 주소는 ###.###.###.###의 총 32비트의 숫자값으로 이루워져있는데 이는 직관적이지 않고 기억하기 어려워 사람의 언어로 나타내었고 특정 아이피에 대해 특정한 이름을 부여한다. 이를 곧 Domain name이라 한다.
  • 이러한 Domain name에 대해 주소값을 가지고 있는 Domain name server가 존재하고 이를 통해 우리는 주소값을 얻게된다.
  • DNS도 계층적으로 local , .com, global 등과 같은 서버로 분리 된다.

'Computer Science > Network' 카테고리의 다른 글

Naver에 접속 해보자  (0) 2021.01.08
TCP/IP illustrate 2  (0) 2020.07.23
DHCP  (0) 2020.07.09
TLS / SSL  (0) 2020.06.01
Wireless  (0) 2020.05.19

관련글 더보기