네트워크와 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
'컴퓨터공학 기초 이론 (old)' 카테고리의 다른 글
ip 정의 관련 (업무하면서,,) (0) | 2022.06.22 |
---|---|
Hadoop 이론 정리 + github code (0) | 2017.11.19 |
신입 개발자 역량 평가 (0) | 2017.10.01 |