일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Trie
- SQL
- DP
- Hash
- 다익스트라
- 스토어드 프로시저
- Dijkstra
- binary search
- 그래프
- union find
- Stored Procedure
- 이진탐색
- two pointer
- MYSQL
- Two Points
- String
- Brute Force
- Today
- Total
codingfarm
1. 네트워크와 TCP/IP 본문
1. 컴퓨터 네트워크의 역사
소켓(socket)
-개발자가 네트워크의 복잡한 원리를 자세히 알 지 못해도 쉽게 네트워크 프로그램을 개발 할 수 있게 해준다.
-OS에서 자체적으로 제공해주는, 네트워크로 연결된 두 컴퓨터가 서로 데이터를 주고 받을 수 있게 해주는 수단.
네트워크 프로그램이란
정보 전달은 정보의 종류와 처리 방식에 상관없이 아래와 같은 구성 요소와 역할을 가진다.
구성요소 | 역할 |
수신자 | 정보 해석 |
송신자 | 정보 생산 |
전령 | 매체 |
인터넷을 매체로 쓰는 현대사회에서는 컴퓨터 프로그램이 정보의 생산과 해석의 역할을 ㄹ담당한다,
네트워크의 출현과 진화
사람의 뇌를 구성하는 뉴런부터 사람들끼리의 만남, 자연 생태계를 통틀어 네트워크라 부르며, 이렇듯 네트워크라는 용어는 인터넷이 생기기 이전부터 존재해왔다.
인류 문명의 발전 또한 도로망, 상하수도망, 우편망 네트워크의 발전과 함께 해왔다.
하지만 이런 네트워크들은 공간과 시간의 한계를 가진다.
컴퓨터의 네트워크인 인터넷의 등장
하지만 기존의 네트워크가 가저오는 한계는 전기/전자 기술의 발전과 함께 허물어지기 시작했다.
전신, 전화, 라디오, TV로 이어지는 매체의 발전은 대량의 정보를 거의 실시간으로 전송할 수 있게 해줬다.
그리고 컴퓨터의 네트워크인 '인터넷'이 발명되었다.
이 인터넷의 등장과 함께 새로운 정보산업들이 급성장하기 시작했다.
2. 인터넷의 출현과 성장
컴퓨터는 "양방향성" 이라는 기존의 정보처리 매체와는 구분되는 점이 있다.
TV나 라디오 등의 통신매체는 오직 수신의 역할만을 하지만 컴퓨터는 정보처리, 수신, 송신의 모든 기능을 갖추고 있다.
이런 양방향성 덕분에 인터넷 매체에서 수용자는 수용자인 동시에 정보 생산자가 될 수 있다.
3. 인터넷을 달리는 TCP/IP
Section 04. 인터넷 네비게이션 - IP(Internet Protocol)
인터넷 : 컴퓨터와 컴퓨터의 연결
IP 주소(IP adress)
-인터넷에서 각 컴퓨터를 규정시키기 위한 유일한 값
-이를 통해 상대방 컴퓨터의 위치를 알 수 있고 서로 통신 할 수 있다.
-라우터는 컴퓨터간의 경로 중간에서 해당 데이터를 어느 컴퓨터(다른 라우터 포함)로 보내야 할지를 결정 한다.
-LAN이 아닌 인터넷 영역에서 데이터를 주고 받을때는 최소한 한 개 이상의 라우터를 거친다.
IP는 인터넷 상에서 컴퓨터의 위치를 찾아서, 데이터를 전송하기 위해서 지켜야할 규칙이다.
※ LAN과 WAN
- LAN(Local Area Network)
- 근거리 네트워크로 가까운 거리의 컴퓨터가 네트워크로 연결된 상태를 의미한다.
- 컴퓨터들끼리 서로의 위치를 알기때문에 라우터가 필요없다.
- WAN(Wide Area Network)
- 원거리 컴퓨터끼리 연결된 상태를 의미한다.
- 라우터를 통해 데이터를 송수신한다.
Section 05. 인터넷 데이터 개발 - TCP(Transmission Control Protocol)
인터넷은 '분산 네트워크'와 '패킷 데이터 전송' 방식을 채택하고 있다.
1. 조각난 데이터가 다른경로로 목적지에 이동하면서 순서가 뒤죽박죽이 될 수 있으므로 데이터를 밪는 측에서는 패킷 순서를 확인하여 데이터를 재조립 할 수 있어야 한다
2. 패키의 일부가 손실되고 노이즈가 껴서 수신측이 재신청 할 수 있어야 한다.
3. 회선이 물리적으로 단절 될 수 있다.
-> 데이터의 흐름을 제어하기 위한 프로토콜이 따로 있어야 한다.
IP | TCP |
네트워크에서 컴퓨터들이 서로의 위치를 찾아서, 데이터를 전송하기 위한 규약 | 데이터의 흐름을 제어하기 위한 프로토콜 |
Section 06. OSI 7계층과 TCP/IP 4계층
은행의 복잡한 거래방식을 몰라도 누구나 쉽게 은행을 이용할 수 있듯이, 인터넷 통신에서는 많은 절차가 추상화 되어 있어서 개발자들은 쉽게 소켓 개발을 할 수 있다.
OSI(Open System Interconnection Reference Model) 7계층
- 물리 계층(Physical Layer)
- 시스템 연결을 위한 전기/물리적 규격을 정의한다.
- 얼만큼의 전압을 가져야 되며, 전선은 어때야 하는지 등에 대한 것들이다.
- 데이터 링크 계층(Data Link Layer)
- 시스템 간의(Point to Point) 신뢰성 있는 전송을 보장하기 위한 계층이다.
- CRC 기반의 오류 제어와 흐름 제어를 위한 규격을 제공한다.
- 네트워크 계층(Network Layer)
- Point to Point가 인터넷으로 확장되면, 컴퓨터와 컴퓨터 사이에 여러개의 노드가 있을 수 있으며 이럴 때 자연스럽게 경로를 찾는 일이 중요해진다.
- 네트워크 계층은 경로를 찾아주기 위한 여러 규격을 제공한다.
- 전송 계층(Transport Layer)
- 컴퓨터와 컴퓨터가 신뢰성 있는 데이터 전송을 보장하기 위한 여러 규격을 제공한다.
- 세션 계층(Session Layer)
- 컴퓨터와 컴퓨터가 연결되었을 때 최종적으로 소프트웨어끼리 통신하게 된다.
- 세션 계층(Session Layer)은 이들 소프트웨어의 통신을 관리하기 위한 규격을 제공한다.
- TCP/IP가 바로 이 세션 계층에 속한다.
- 표현 계층(Presentation Layer)
- 어떤 데이터를 인터넷으로 전송할 때 데이터는 다루기 좋은 형태로 인코딩 되거나 혹은 보안상의 이유로 암호화 되기도 한다. 이에 대한 규격을 제공한다.
- 응용 계층(Application Layer)
- 응용 프로그램들 간에 전달되는 데이터를 해석한다.
- 이 규격들은 응용 프로그램의 조율에 따라 달라질 수 있다.
- HTTP, FTP가 대표적인 프로토콜이다.
- 응용 프로그램의 종류에 따라 독자적인 프로토콜을 만들어 사용할 수도 있다.
- 모든 인터넷 통신은 반드시 TCP/IP 4계층을 거쳐야 한다.
- 각 계층은 완전한 전문화로 인해 독립적이다.
- 그러므로 각분야의 개발자들은 자신이 맡은 계층의 기술적 사항만을 전문적으로 알고 있으면 된다.
- 각 계층은 데이터를 만들기 위한 프로토콜을 제공한다.
- ex) IP 프로토콜은 인터넷 상에서 컴퓨터와 컴퓨터 사이에 데이터를 전송하기 위해서 따라야 할 약속이다.
- 원활히 프로그램을 개발하기 위해선 프로토콜을 이해하고 있어야 한다.
세션 계층
-소프트 웨어간의 통신을 관리한다
-TCP / IP 가 속한 계층
응용 계층
-응용 프로그램들 간에 전달되는 데이터를 해석하고 표시하기 위한 규격을 제공한다.
-규격은 응용 프로그램의 종류에 따라 달라질 수 있다.
ex) HTTP, FTP
-응용 프로그램에 따라 독자적인 프로토콜을 만들어 사용할 수 있다.
TCP/IP 4계층
OSI 7계층을 단순화 시킨것이다.
네트워크 프로그래밍
- 컴퓨터와 컴퓨터가 연결된 망(인터넷)에서 인터넷 규격을 이용해서 서로 정보를 교환할 수 있도록 해주는 프로그램이다.
- TCP/IP 4계층 중 응용 계층과 전송 계층의 일부 지식을 이용해서 개발한다.
- 응용 계층에 관련된 프로토콜 : HTTP, FTP, 텔넷 등...
- 소켓 API
- 프로토콜을 세세히 모르더라도 네트워크 프로그래밍을 위해서 제공되는 함수의 묶음
TCP/IP 4계층으로 알아보는 네트워크 통신 흐름
- TCP/IP 4계층을 통하여 어떻게 데이터 통신이 이루어지는지 살펴보자.
- 인터넷 서비스 WWW(World Wide Web)이 어떻게 서비스되는지를 보여준다.
- 인터넷 프로그램은 서비스를 제공하는 '서버'와 서비스를 요청하는 '클라이언트'로 구성된다.
- 서버 : 아파치, IIS와 같은 웹서버
- 클라이언트의 요청을 받아서 파일을 읽고 전송한다.
- 클라이언트
- 서버에 웹페이지를 요청하고, 서버로부터 전송받은 데이터(웹문서)를 화면(파이어폭스, IE9, 크롬...)에 표시한다.
- 서버 : 아파치, IIS와 같은 웹서버
- 각 개발자들은 자신이 속한 계층만 신경 쓰면 된다.
- 웹클라이언트 프로그램은 HTTP 프로토콜에 맞추어서 웹서버에 페이지를 요청한다.
- 전송계층에서는 TCP와 IP 프로토콜을 이용하여 인터넷을 거너뛸 준비를 한다.
- 물리계층(랜카드)에서는 본격적인 이동이 진행된다.
캡슐화
- 패킷을 전송하기위해 각계층으로 내려가면서 패킷에 정보(헤더)를 계속해서 덧붙이는것
역다중화
- 패킷이 도착하면 각 계층에서 순서대로 패킷을 해석하면서 헤더를 제거해나간다.
'TCP IP 소켓 프로그래밍' 카테고리의 다른 글
4. 소켓 네트워크 프로그램 개발 - 4. 수신 대기열 생성(listen 함수) (0) | 2021.05.10 |
---|---|
4. 소켓 네트워크 프로그램 개발 - 3. 소켓 설정(bind 함수) (0) | 2021.05.10 |
4. 소켓 네트워크 프로그램 개발 - 2. 소켓의 생성(socket 함수) (0) | 2021.05.10 |
4. 소켓 네트워크 프로그램 개발 - 1. 네트워크 프로그래밍 소개 (0) | 2021.05.09 |
3. 소켓 네트워크 프로그래밍에 대한 이해 (0) | 2020.10.23 |