ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 42Seoul - Netwhat
    42Seoul 2021. 5. 26. 13:35
    반응형

    이번 프로젝트는 Netwhat이라는 프로젝트이다.

    내용은 전반적으로 어떻게 컴퓨터가 통신을 하고 그것에 대한 기본지식들을 습득하는 프로젝트이다.

     

    거의 대부분 학생들이 기출문제를 공부하는 것 같다. 물론 효율적이고 중요한 부분만 보는 것이 좋긴하다.

    그러나 이 프로젝트 내용은 내가 개발자로써 일하며 정말 필수지식이라고 생각한다.

    난 지금 시간이 나서 공부할 기회가 생겼을 때 확실하게 해놓고 싶어서 5일 간 공부를 하고 그것을 지금 기록하려고 한다.

     

    시!작!

     

    1. Protocol(Format, Order, Action)

              Format : 통신의 형식이 어떤가 

              Order : 네트워크 간의 메세지를 어떤 순서로 받는가 

              Action : 메세지를 전달하거나 받을 때 어떤 행동을 하는가

     

              ① OSI 7 Layer(Open System Interconnection)

     

     

              위와 같이 Protocol layer는 7계층으로 이루어져 있다.

     

               - 1층(Physical Communication (LAN or NIC Hardware))

                        매체를 통해 비트 데이터를 Stream형태로 전송하고 받는 역할 수행하는 layer.

                        비트를 Signal로 변환하여 처리한다.(왜 ? Signal은 여러비트를 한 번에 처리가능.)

                        예를 들면 랜선, 리피터, 허브등의 장비.

     

              - 2층(Data Link (Hop to Hop or NIC Driver))

                        비트 데이터 혹은 Packet을 단위화 하여 기기 간 Hop to Hop 전달하는 역할.

                        Mac address를 물리적으로 할당받음.

                        예를 들면 이더넷, HDLC등의 프로토콜, Switching, Bridge장비가 동작함.

     

              - 3층(Network (Host to Host / Kernel Space of OS) )

                        상호 간의 네트워킹으로 Packet 형태의 데이터를 destination으로 운송하는 역할을 하는 layer.

                        Routing과 관련.

                        Routing이란? 다양한 독립 네트워크를 묶을  여러 경로가 생기는데 제일 효율적인 경로를 찾아주는 기능. 

                                            라우팅, 흐름제어, 인터네트워킹을 수행. 라우터 장비가 해당 계층에서 작동. IP주소를 할당하여 통신을 관리. 

     

               - 4층(Transport (Process to Process / Kernel Space of OS))

                        Packet들의 전송에 Error가 없는지 확인하는 계층.

                        TCP, UDP, SCTP, RTP가 전송계층에 속함. 데이터의 오류검출, 복구, 흐름제어, 중복검사 수행.

     

               - 5층(Session (Peer to Peer / User Space of OS))

                         끝단의 프로세스가 통신을 관리하기 위한 방법. TCP/IP 세션을 만들고 없애는 역할. 

                        Sessoin이란 ? 인간이 일하는 단위 전반적인 Connection을 관리. 

     

                - 6층(Presentation (Peer to Peer / User Space of OS))

                        사용자의 명령어를 완성  결과 표현. 

     

                - 7층(Application (Peer to Peer / User Space of OS))

                        네트워크 자원에 접근할  있도록 해주는 layer. 7계층 중 가장  부분으로 Browser, Gmail등이 있다. 

     

    * 참고 자료

     

             인터넷의 3요소

                   - Host : 통신 서비스의 궁극적 소비자.

                   - Packet Network : IP를 이용하는 Host컴퓨터의 통신을 지원. 

                   - IP Router(같은 망은 라우터, 다른 Domain은 Gateway) 상호 연결 네트워크에서 Packet을 사용하는 것.

     

    2. IPv4 와 IPv6

     

              ① IPv4 : 32bit

                        

                        * Classful IPv4

                                Class A : 1번째 섹터가 Network Part 나머지 3 섹터를 Subnet/ Host 활용.

                                Class B : 1,2번째 섹터가 Network Part 나머지 2 섹터를 Subnet/ Host 활용.

                                Class C : 1,2,3번째 섹터가 Network Part 나머지 1 섹터를 Subnet/ Host 활용.

                                Class D : Multicasting 위한 IP주소.

     

                        *  IPv4 Packet Forwarding Method

                                Unicast : 1,2번째 섹터가 Network Part 나머지 2 섹터를 Subnet/ Host 활용.(1:1)

                                Broadcast : 1,2,3번째 섹터가 Network Part 나머지 1 섹터를 Subnet/ Host 활용.(1:N)

                                Multicast : Multicasting 위한 IP주소.(N:N)

     

                        Class의 문제점 : Address의 비효율적 관리. 시간이 갈수록 네트워크가 많이 생겨남. 

     

     

                        *  CIDR(Classless Inter-Domain Routing)

                                클래스가 없는 도메인 간의 라우팅 기법

                                네트워크 부분과 호스트 부분을 "/숫자"로 구현함으로 Subnet mask개념을 필요해짐.

                                EX> 192.20.10.0 /24 24bit 이후로 나오는 부분을 전부 사용가능함.

     

                        *  Subnet Mask

                                IP네트워크의 논리적 분할이다.

                                항상 사용하는 네트워크 3개 존재.(자기 자신 IP, 네트워크 자체 IP, 네트워크 Broadcast IP)

     

     

               IPv6 : 128bit

     

                        *  3 Types of IPv6 Address

                                Unicast : 단일 인터페이스에 대한 주소. 어느 범주를 기준으로 하냐에 관해 3가지로 나뉨.

                                             Link-local, Unique Link local, Global Scope

                                Anycast : 인터페이스 집합에 대한 주소.

                                Multicast : 일반적으로 서로 다른 노드에 속한 인터페이스 집합에 대한 주소.

     

     

     

    3. Public / Private IP Address

     

              ① Public IP Address

                      ISP(인터넷 서비스 공급자)가 제공하는 IP주소이다. 외부 공개 IP주소. 전 세계에서 유일한 IP주소를 가진다.

     

              Private IP Address(Local IP, 가상 IP)

                      특정 네트워크 내에서 유일한 IP주소이다. 다른 네트워크 상에서는 같은 주소가 존재할 수 있다.

     

              --> Public IP는 어디서든 접근 가능하지만 Private IP는 해당 IP주소가 포함된 사설망 내에서만 찾을 수 있다.

                   사설망 역시 Host와 통신 할 수 있어야 인터넷 기능을 한다. 그래서 NAT가 이 역할을 해준다.

     

              ③ NAT(Network Address Translation)

                   라우터나 방화벽에 설치되어 동작한다. Private IP Public IP로 바꿔줘 통신을 가능하게 하는 역할을 한다.

     

              * NAT의 종류                   

                       

                 Static NAT : Public IP를 Private IP로 1 : 1로 Mapping하여 변환한다.

     

                 Dynamic NAT : Public IP를 Private IP로 N : N로 Mapping하여 변환한다.

     

                 NAPT : Public IP Private IP 1 : N Mapping하여 변환한다.

     

              * NAT의 동작원리

               

               

             개인 PC(사설망)에서 외부 네트워크로 통신을 시도하면 Packet은 항상 공유기(Gateway)를 거치게 되어있다.

             여기서 문제가 발생한다. 서버가 1.1.1.1 IP주소를 받고 Packet을 이후 어디로 보내야하는지를 모르게된다.

             따라서 우리는 보낼 때 NAT TABLE을 이용하여 기록해놓는다.

             그리고 Packet응답이 돌아오면 값에 맞는 사설망으로 Packet을 전송한다.

     

             그러나 NAT는 기기가 동시에 외부 네트워크 연결요청을 하면 Packet의 중복 값들이 너무 많아서 길을 잃는다.

             그래서 NAPT를 이용한다(EX> 1.1.1.1과 2.2.2.2같은 IP들이 똑같이 사용되기 떄문)

     

     

              * NAPT(Network Address Port Translation)                  

                       

                 테이블에 Port를 추가하여 구별가능하도록 보냄.

     

     

    4. Network Layer Protocol

     

              * IP의 개념               

                       

                 IP는 두 가지 기능을 주로한다. Addressing과 Fragmentation이다.

                 본질적으로 IP를 통해  Destination으로의 Datagram을 전송하는 역할을 한다. 이 기능을 라우팅이라고 한다.

     

              * IPv4의 Header Format

        

     

    위의 그림과 같이 Datagram의 헤더 부분의 기능을 표시해놓았다. 여기선 중요한 기능 부분만 집고 넘어가자.

    TTL(Time to live)는 Datagram의 수명으로 이해하면 된다. 즉 TTL을 넘어가면 Data는 그대로 소멸된다.

    Router에 도달할 때마다 1씩 감소한다. 0이 되면 소멸한다. 결과적으로 떠돌아다니는 Data를 정리하는 개념으로 생각하자.

     

    위에서 말했던 AddressingFragmentation에 대해서 얘기하자.

    Addressing은 Name(식별대상), Address(대상의 위치), Route(어떻게 도달하는지) 3가지를 만족 할 경우 이 기능을 수행.

    Fragmentation은 데이터를 쪼개는 것. Packet이 Destination보다 클 경우 수행.

     

    마지막으로 Header Checksum을 살펴보자.

    TCP/IP에서 사용하는 Error Detection기능 중 하나이다. 모든 헤더 내용들에게 16bit의 체크섬을 더해서 문제가 있는지 검사하는데 문제가 없다면 "FFFF" 있다면 "0000"가 나오게 된다.

     

              * IPv4의 Packet Forwarding

                        

                         Direct Packet Forwarding

                             B가 A에게 Packet을 보내야 함 -> Mask계산을 통해서 동일 Subnet에  있다는 것을 확인

                             ->  B는 Forwarding table을 통해서 Next hop의 실제 주소를 알아냄

                             -> 이더넷을 이용하기 위해서 Network layer에서 Data Link layer로 Packet을 흘려보냄.

                             -> Next hop에 바로 보낼 수 있음.

     

                        ② Indirect Packet Forwarding

                             B가 D(Host)에  IP Packet을 보내고 싶음. -> 위와 같이  mask를 이용해 같은 subnet인지 확인

                             -> Router에 Packet을 흘려보냄 -> D에 해당하는 network를 찾을 때까지 Indirect Packet                                       Forwarding 반복. -> 찾게 되면 Direct Packer Fowarding실행.

     

              * ARP(Address Resolution Protocol)

     

                      IP주소(Data link layer) Mac주소(Network layer)로 매칭 시키기 위한 프로토콜.

     

                      작동 원리 : Host 송신자는 Dest IP주소를 지정하여 Broadcast를 보냄

                                     -> IP에서 ARP를 이용하여  ARP Request메세지 생성

                                     -> 만약  Dest IP가 일치한다면 Unicast방식 자신의 Mac주소가 포함된 Packet으로 응답

                                     -> 송신 측은 지정한 IP주소에해당하는 Mac주소를 받을 수 있음.

     

              * Proxy ARP

     

                      특정 Node가 다른 Node를 대신하여 ARP Reqeust에 응답하는 기법이다.

     

                      작동 원리 : A가 Broadcast방식으로 Subnet A에 ARP Req를 보냄

                                     -> 그것을 받은 라우터는 Host D가 어디있는 줄 암

                                     -> 그래서 자신의 MAC주소를 포함한 Reply를 해줌

                                     -> Host A는 응답을 받고 테이블을 라우터의 Mac주소로 업데이트

                                     -> 계속 라우터로 Packet을 보냄.

     

              *  ICMP(Internet Control Message Protocol)

     

                   TCP/IP 에서 IP Packet을 처리할 때 발생하는 문제를 알려주거나 진단해주는 Protocol. Network layer일부분.

     

                   상황 1 : Source 에게 IP 데이터그램 전송 실패를 알림

                   상황 2 : 진단 / 정보전달

                                 Ping : 특정 IP주소와 통신이 가능한지를 확인하는 메세지.

                                 Tracert/ Traaceroute : 특정 IP까지 가는데 거친 Routing 경로를 반환.

     

     

    5. Transport Layer Protocol

              이 계층의 Protocol은 단말(End Point)에서만 구현된다. 대표적으로 TCP(정확성), UDP(신속성)가있다.

     

    TCP 4계층과 OSI 7계층

     

              * TCP(Transmission Control Protocol)             

                       

                 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 Protocol.

                 TCP는 패킷을 추적 및 관리. IP는 데이터의 배달을 처리. 3 Way Handshake(SYN, ACK)를 사용.

     

              * 3 Way Handshake      

                       

                 3번의 요청 및 응답 후 연결이 되는 것.

     

     

                 LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태

                 SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태

                 SYN-RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 했지만

                                                아직 클라이언트에게 확인 메세지를 받지 못한 상태

                 ESTABLISHED : 3 way-handshaking이 완료 된 후 서로 연결된 상태

     

     

              * Socket          

                       

                 네트워크상에서 동작하는 프로그램 간 통신의 종착점. 즉 데이터 통신의 연결부.

     

    UDP의 SOCKET예시

              * UDP(User Datagram Protocol)           

                       

                 비연결 지향적 프로토콜. 일방적으로 데이터를 발산하는 방식이다.

     

     

    6.  Application Layer Protocol

              * DHCP(Domain Host Configuration Protocol)         

                       

                 Host의 TCP/IP 프로토콜의 기본 설정 및 IP주소를 클라이언트에게 자동으로 제공해주는 프로토콜.

              * DHCP서버의 구성     

                       

                 DHCP서버 : 네트워크 인터페이스를 위해서 IP주소를 가지고 있는 서버에서 실행되는 프로그램으로 일정한 범위의 IP주소를 다른                                   클라이언트에게 할당하여 자동으로 설정하게 해주는 역할.

                 DHCP클라이언트 : DHCP서버에게 IP주소를 요청하고 부여받으면 TCP/IP 설정은 초기화 되고 다른 호스트와 TCP/IP를 사용해                                             서 통신을 할 수 있게 된다.

     

              * IP주소 할당받는 과정

     

     

    1. DHCP Discover : 클라이언트는 DHCP서버를 찾는 메세지를 Broadcast로 보낸다.

    2. DHCP Offer : 서버는 메세지를 받고 주소를 할당해준다. (여러 기기에 동일한 주소가 갈 경우, 먼저 request한 클라이언트가

                                주소를 갖게 된다.

    3. DHCP Request : 클라이언트는 서버가 제안한 IP주소를 검토. 사용하려는 서버에는 ACK, 나머지는  NAK로 Broadcasting한다.

    4. DHCP ACK : 서버는 해당 주소에 대해서  Binding해준다.(할당)

     

              * DNS(Domain Name System)       

                       

                 Domain주소를 IP주소로 맵핑하는 것.

     

              * DNS의 3요소     

                       

                DNS Name Space

                        일반적인 URL의 최상위 표현. (ex. www.kosaf.go.kr -> go와 kr이 Name space임)

     

                DNS Name Server

                        서버는 Primary, Secondary 2개의 서버가 있다. 주로 주 서버가 터지면 부 서버를 이용하도록 설계되어져 있다.

                        그리고 부 서버의 경우 주기적으로 주 서버의 데이터들을 받아와 업데이트한다.

     

                DNS Resolver

                         End User System과 서버 사이에 위치한 Proxy로 중개자 역할을 수행.

                       서버에게 도메인 주소에 해당하는 IP요구 -> Query 작성 -> Query를 받은 서버는 응답 -> 못 찾으면 다른 서버에 전달

     

     

    1. User1가 원하는 IP주소를 찾기 위해 Resolver는 DNS Query를 생성한다.

    2. Resolver는 DNS 데이터들이 Caching되어있는 DNS Record Cache에서 쿼리에 대한 내용을 찾아본다. 

    3. 이렇게 여러 서버에 쿼리를 보내고 서버는 Domain name에 맞는 응답을 하게 된다. 

    4. 서버로 부터 DNS Record를 받을  Resolver에 저장한다. TTL도 같이 기록된다.

    5. 쿼리에 대한 답을 User1에게 넘김으로 IP주소를 알게 된다.

    6. User1이 방문 했던 Domain Name에 User2가 방문하려고  경우, 또 쿼리를 만들어 보내게 된다. 

    7. TTL기준 0이 아닐  테이블에 답이 있기 때문에 다른 통신 없이 쿼리에 대한 답변을 해줄  있다. 

    반응형

    '42Seoul' 카테고리의 다른 글

    42Seoul - Push_swap  (0) 2021.09.13
    42Seoul - Minitalk  (0) 2021.08.05
    42Seoul - GNL(get_next_line)  (0) 2021.05.18
    42Seoul - Libft  (0) 2021.05.06
    42Seoul본 과정에 앞서 피신 후기..!!  (0) 2021.05.02

    댓글

Designed by Tistory.