본문 바로가기

컴퓨터공학 기초 이론 (old)

네트워크와 TCP/IP

반응형

 네트워크와 TCP/IP (뇌를 자극하는 TCP/IP 소켓 프로그래밍)


1부. 소켓 네트워크 프로그래밍

1장. 네트워크와 TCP/IP

2장. 네트워크와 프로그래밍 환경 만들기

3장. 소켓 네트워크 프로그래밍에 대한 이해


1장. 네트워크와 TCP/IP

1. 네트워크! 네트워크란 무엇인가?

2. 컴퓨터 네트워크의 진화

3. 컴퓨터 네트워크가 있게한 동력

4. 네트워크의 네트워크 인터넷 


- 네트워크, 컴퓨터 네트워크로의 진화

1. 모든 것은 정보다.

2. 자연현상은 정보의 네트워크의 상호작용의 결과이다.

3. 생물활동도 정보 네트워크의 상호작용의 결과다.

Ex) 뇌의 뉴런!! 


- 네트워크 효과

1. 한정된 노드와 공간에 더 많은 정보를 저장할 수 있다.

2. 하나의 경로가 파괴되더라도 다른 경로를 통해서 노드에 도달할 수 있다.


- 컴퓨터의 등장

1. 추론기계에 대한 인류의 도전

2. 전기와 전자로 작동하는 추론기계 컴퓨터의 개발

3. 대량의 정보를 빠른 시간에 처리

4. 2차 대전 중 암호문 해독에 사용


- 컴퓨터 네트워크의 등장

  - 컴퓨터 네트워크에 대한 연구

  - 냉전 시대 안전한 컴퓨터 네트워크에 대한 요구

    중장집중형에서 분산형으로 발전, 더 선호함!! 

  - 상업적 컴퓨터 네트워킹을 위한 패킷 통신 방식의 개발

    데이터를 여러개로 쪼개서 보내는 기술, 도착지에서 패킷을 재조립해야 하는 부담이 있지만 네트워크 트래픽을 여러대의 컴퓨터가 공유할 수 있기 때문에 대량의 데이터 통신에 적합하다.

  - 분산형패킷 통신 방식, 이 두 기술이 합쳐져서 인터넷을 이루는 기반기술이 된다!! 

    이 두 기술로 인터넷의 전신이라고 할 수 있는 알파넷이 만들어 졌다. 

  

- 네트워크의 네트워크 = 인터넷 등장

  - 네트워크가 연결되면서 인터넷의 구조를 가지다.

  - 웹의 등장과 함께 폭발적으로 성장 


- 인터넷 성공의 열쇠 TCP/IP

  - 거대한 인터넷에서 연결하고 데이터를 주고 받기 위한 규약이 필요

  - 네트워크 구조를 유지하기 위한 프로토콜 : IP

    - 분산네트워크 구조를 유지하기 위해서

    - 네트워크는 링크와 노드로 구성된다. 특정노드를 찾는데 그 노드임을 보장해 주는 것 == IP  

  - 통신을 보장하기 위한 프로토콜 : TCP

    - 패킷의 흐름을 제어하기위한 프로토콜 


- 원하는 노드를 식별하기 위한 프로토콜 IP

  - 전체 네트워크에서 식별가능한 IP 주소를 부여(4byte 크기의 ip주소를 발급) 

  - IP 주소를 이용해서 원하는 노드로의 경로를 설정

  - 인터넷상의 거의 모든 응용이 IP를 기반으로 하고 있다.

  - 노드와 노드사이에는 경로 설정을 위한 라우터가 배치 된다.

  

- 데이터 흐름을 제어하기 위한 프로토콜 : TCP

  - 데이터는 여러 패킷으로 조각 나서 이동한다.

    - 통으로 보내면 데이터 전송이 끝날 때 까지 해당 노드를 점유하고 있으니 안된다.

  - 패킷 통신은 네트워크를 효율적으로 활용

  - TCP는 패킷을 재조립하고, 재전송을 요청하는 등 흐름을 관리한다.

    - 패킷은 순서대로 도착하지 않을 수 있다. 잡음으로 인해 데이터 회손이 발생할 수도 있다.

    - TCP데이터 패킷에 대한 일련번호전송에 대한 응답, 두가지 메커니즘을 이용해서 데이터의 흐름을 제어한다.


- OSI 7계층

  - 인터넷 응용의 개발을 위해서 7계층으로 전문화

  - 개발자는 자신의 전문 계층의 지식만으로 원하는 응용을 개발

  - 효율적이고 빠른 개발이 가능하다. 

  - (7)응용계층 - (6)표현계층 - (5)세션계층 - (4)전송계층 - (3)네트워크계층 - (2)데이터링크계층 - (1)물리계층

    - 물데네전세표응

    - 인터넷 장비를 개발한다면 1물리계층만 알면된다. 상위계층은 운영체제와 응용어플리케이션이 알아서 처리해주니 신경쓸 필요 없다.

    - 응용 어플리케이션 개발자는 7,6 계층만 신경쓰면 된다. 하위계층은 운영체제와 하드웨어에서 알아서 처리해 주기 때문에.. 개발이 훨씬 간단해지지!! 

    - 물론 자신이 맡은 계층 이외에 다른 계층의 지식이 일정부분 필요하기는 하지만 OSI 7계층으로 다른계층에 대해서는 최소한의 이해만으로 원하는 것을 개발할 수 있다.


- TCP/IP 4계층

  - OSI7계층은 지나치게 전문화 되었다.

  - 전문화에 따른 커뮤니케이션 비용을 줄이기 위해서 OSI 7계층의 몇개 계층을 통합해서 TCP/IP 4계층을 만들었다.

  - 이 4계층으로 인터넷을 더 단순하게 볼 수 있다.

  - 응용계층(응용,표현) - 전송계층(세션,전송) - 인터넷계층(네트워크,데이터) - 물리계층(물리) 

    - software 개발자는 응용계층만 신경쓰면 된다. 


- 네트워크 프로그래밍

  - 인터넷은 하드웨어 인프라와 프로토콜을 제공한다.

  - 프로토콜은 사용명세서로 이 명세서를 따라서 해당 응용을 개발할 수 있다.

  - 네트워크 프로그래밍은 TCP/IP 4 Layer의 응용계층의 규약을 이용해서 프로그램을 개발하는 과정을 의미한다.

  - 프로그램에서 이들 규약은 코드로 작성되어야 한다.

  - 주요한 프로토콜의 규약은 소켓에서 라이브러리 형태로 제공한다.


- TCP/IP 4 Layer와 데이터 통신

  - 네트워크 프로그램은 TCP/IP 4계층의 각 단계의 커뮤니케이션 과정이다. 

  - 웹 서버와 웹 브라우저가 있다고 가정 했을 때!

  - 웹 문서의 요청과 응답을 위한 HTTP Protocol

  - 데이터의 흐름을 제어하기 위한 TCP Protocol

  - 목적지의 경로를 설정하기 위한 IP Protocol


- Encapsulation

  - 데이터는 각 단계를 거치면서, 커뮤니케이션할 프로토콜을 선택한다.

  - 프로토콜을 선택했다면, 프로토콜을 만족하는 정보를 데이터 앞에 덧붙인다.

  - 인터넷으로 나갈 때까지 각 단계의 프로토콜 정보가 데이터에 덧붙여진다. 

  - 네트워크 프로그램이 다루는 것은 결국 데이터이다. 

  - 이 데이터는 TCP/IP 4계층을 거치면서 해당 프로토콜의 정보를 덧붙이게 된다. 이 프로토콜의 정보를 header라고 한다.

    - 웹 브라우저는 먼저 HTTP규약에 따라서 요청 데이터를 전송한다. user data

    - 다음 단계에서 TCP header가 붙는다. TCP header를 데이터 흐름을 제어하기 위한 여러가지 정보를 가지고 있다,

    - 다음 단계에서 IP header가 붙는다. 상대편 컴퓨터를 찾아가기 위한 자신의 IP주소와 상대방 IP 주소가 덧붙여지게 된다. 

    - 이렇게 매 단계마다 정보가 덧붙여져서 인터넷으로 나가게 되는데, 이과정을 capsul로 싸는 것 같다고 해서 encapsulation이라고 한다. 


- 인터넷에서의 경로 설정(라우터)

  - 인터넷으로 나간 데이터는 라우터에 의해서 경로가 설정된다,

  - 라우터는 패킷의 IP해더 정보를 읽어서, 목적지 주소를 알아내고 주변의 어떤 라우터로 보내야 할지를 결정한다. 

  - 이렇게 몇 개의 라우터를 거쳐서 최종 목적지에 도달한다.   


- Demultiplexing

  - 목적지에 도착한 데이터는 반대의 과정을 거쳐서 웹 서버까지 도착한다.

  - 웹 서버는 HTTP 프로토콜 규격에 의거, 클라이언트의 요청을 확인하고 문서를 읽어서 데이터를 전송한다. 

  - 라우터를 거쳐 목적지에 도착하면 Encapsulation의 반대 과정을 거치게 된다. 

    - IP header를 통해서 자신에게 도착한 데이터가 맞는지 확인하고,

    - 자신에게 도착한 데이터가 맞다면, 윗 계층으로 넘겨준다. TCP 정보를 확인해서 그 흐름이 맞다면 즉, 회손된 데이터가 있는지 확인하고 순서가 잘못 되었다면 재조정해서 유저 영역에 넘기게 된다.

    - 웹서버는 유저 데이터를 확인해서 응답을 해준다. 







reference : Youtube

반응형