티스토리 뷰
✔ 네트워크의 발전 및 역사
📌모든것은 정보다!
- 자연현상 및 생물활동도 정보 네트워크의 상호작용의 결과이다!
📌네트워크의 효과
1. 한정된 노드와 공간에 더 많은 정보를 저장할 수 있다.
2. 하나의 경로가 파괴되더라도 다른 경로를 통해 노드에 도달할 수 있다.
📌컴퓨터의등장
1. 전기와 전자로 작동하는 추론기계 등장.
대량의 정보를 빠른 시간에 처리
2차 중 대전 암호문 해독에 사용
2. 국방을 중심으로 컴퓨터 네트워크에 대한 연구
냉전 시대 안전한 컴퓨터 네트워크에 대한 요구.
중앙 집중형 -> 분산형 네트워크 (네트워크효과)
3. 상업적 컴퓨터 네트워킹을 위한 패킷 통신 방식 개발
- 데이터를 쪼개 여러개의 조각으로 나누어 보내는 기술
- 도착지에서 패킷을 재조식해야하는 부담이 있지만, 네트워크 트래픽을 여러개의 컴퓨터가 공유할 수 있으므로 대량의 데이터 통신에 적합하다는 장점을 가지고 있다.
- 분산 네트워킹 구조 + 패킷 데이터 통신 방식 => 인터넷 기반구조 만들어짐.
- 이후 웹의 등장과 함께 폭발적 성장
- 거대한 인터넷에서 연결하고 데이터를 주고 받기 위한 규약 필요
분산 네트워크 구조 -> 네트워크 구조를 유지하기 위한 프로토콜 : IP (노드 구분할 수 있는 것 필요)
패킷 데이터 통신 방식 -> 통신을 보장하기 위한 프로토콜 : TCP (여러경로통해 목적지도착. 순서가 뒤바뀌거나. 훼손될 수 있다. 패킷의 흐름제어를 위한 프로토콜 필요)
TCP/IP - 인터넷 네트워킹의 기반 프로토콜로서 인터넷이 원활히 작동하는데 중요한 프로토콜.
ip
tcp
osi 7layer - 인터넷 네트워크 통신을 위한 과정을 단계별로 나누어 세분화 시켜놓은 모델.
4. 네트워크 프로그래밍
사실상 네트워킹을 위해 만드러진 소켓이라는 라이브러리를 잘 사용하는 것!
5. 네트워크 프로그래밍을 위한 기반 기술인 BSD Soket은 OS 독립적이다. 공통적인 기술을 제공한다.
- 유닉스 => 시스템 프로그래밍 기술, 네트워크 프로그래밍 기술의 표준... but 인터넷 시대에 적응 실패
- 리눅스 => 인터넷을 이용한 다수의 개발자의 자발적 참여로 발전 됨.
가벼움, 유연함, 오픈소스 를 무기로 인터넷에서 선전되었다. 유닉스의 기술과 철학을 그대로 계승
- 윈도우 => 유닉스와 차별되는 기술.
📌 소켓 - 인터넷프로토콜을 사용해 네트워크 프로그래밍 가능.!
소켓이란 무엇인가?
UC버클리에서 네트워크 프로그래밍 개발을 위한 BSD소켓 개발(C API 지원). 모두에게 공개함
네트워크 프로그래밍 개발을 위한 실질적 산업 표준이 되었다.
모든 유닉스와 리눅스 그리고 윈도우에서 채택함.
소켓 - TCP 구현함수 모음 제공
- 전송계층 위에 존재
- 우리는 소켓 라이브러리만 쓰면 됨.
UC버클리대학에서 소켓에대한 C언어로된 인터페이스를 제공하였다.
자유롭게 사용할 수 있도록 공개.
BSD Socket - 사실상 표준이 되었다.
-소켓이 하는일
소프트웨어간 연결. 데이터 통신.
웹 --(소켓)-- [ 인터넷 ]--(소켓)--아파치(문서갖고잇음)
connect accept
소켓을 이용해 연결됨!
📌 연결 방식
연결에는 다양한 방식이있다. 어떤 종류의 정보를 주고 받는지에 따라 다르다.
서버&클라이언트 모델 - 중앙 집중형 정보 제공 방식 N:1
매니저&에이전트 모델 - 매니저프로그램 1 : 에이젼트 프로그램 : N (ex 시스템 네트워크 관리 프로그램 )
P2P 모델 - 동등 계층 모델 - 모든 노드가 동등한 자격으로 네트워크에 참여(서버이면서 동시에 클라이언트가되는) ex 토론토
모델의 종류에 상관없이 대부분 소켓을 사용.
네트워크 프로그램은 인간 커뮤니케이션의 모방
📌네트워크 프로그램 흐름
1. 기존의 망에 노드를 추가하려면 = 소켓 준비!
2. 네트워크에 참여하려면 전체 네트워크에서 구분할 수 있는 유일한 번호를 가져야 한다. = ip주소 port주소
=> 인터넷망 참여!
3. 통신상대 찾아가기 = 상대방의 ip주소,port번호
흐름
1. 송신측 - 소켓생성 -> 포트번호 부여 ->상대 ip/port주소로 연결 -> 통신 -> 종료
2. 수신측 - 소켓생성 -> 포트번호 부여 > 상대편 연결 기다리기 -> 통신 -> 종료
각 과정에 맞는 소켓api를 배치하여 프로그램을 만든다.
[소켓함수]
인터넷과 연결하기 위한 접점인 소켓 생성
socket(int domain, int type, int protocop);
1. domain : 소켓의 사용영역 정의 - af_inet(인터넷영역에서 사용하는 소켓)
2. type, protocol :소켓타입과 프로토콜 TCP or UDP
socket_STREAM <>IPPORTO_TCP / SOCKET_DGRAM <> IPPORTO_UDP
- 소켓 생성후 반환값 : 소켓 지정 번호
-connect(int sockfd, ?,? ? ) - 원격 소켓에 연결하기 위한 함수
원격의 주소, 포트번호, 등등 구조체..
📌 데이터 교한 방식
전화 - 한 사람이 회선 독점! 전화 교환원이 양쪽의 회선을 연결해줌! - 회선 교환 방식
인터넷 - 패킷전송을 통한 회선 공유! - 패킷 교환 방식
📌Ip주소
공인ip - 사설 ip
'컴퓨터 기본지식(CS) > 네트워크' 카테고리의 다른 글
SSL 과 SSH 는 무엇일까? 차이점은? (0) | 2022.10.20 |
---|---|
SSH 란? (0) | 2021.10.12 |