네트워크: 여러 컴퓨터들을 통신 회선으로 연결한 것 (하드웨어적인 개념)
- LAN: 근거리에 있는 컴퓨터 연결(집, 회사, 건물, 특정 영역에 존재하는 컴퓨터 연결)
- WAN: LAN을 연결한 것 == INTERNET
(LAN과 LAN은 라우터를 이용해 연결)
서버: 서비스를 제공하는 프로그램
클라이언트: 서비스를 요청하는 프로그램
클라이언트가 서비스를 요청하고 서버는 처리 결과를 응답으로 제공
IP주소: 네트워크 어댑터(LAN 카드)마다 할당되는 컴퓨터의 고유한 주소
port번호: 운영체제가 관리하는 서버 프로그램의 연결 번호, 서버 시작 시 특정 port 번호에 바인딩(논리적인 port)
단계별로 수행
1. jdbc 드라이브 연결
2. 클라이언트 프로그램에서 쿼리문 작성후 객체에 담아 dbms에 보냄
3. dbms는 받은 내용을 분석해서 처리
4. dbms는 처리하는데 성공했으면 1, 실패했으면 0 보냄
* 클라이언트 프로그램을 사용하는 이유?
서버에 올려 놓고 재사용이 가능하기 때문에 많은 사용자에게 서비스 가능 -> 다양한 사용자가 공유할 수 있는 서비스
* 네트워크 어댑터: IP주소로 변환을 해주고 물리적인 포트를 논리적인 포트로 변환해줌
TCP
인터넷 프로토콜의 핵심 요소 중 하나로 컴퓨터 네트워크에서 데이터를 안정적으로 전송하기 위한 프로토콜이다.
전송계층에 속하는 프로토콜 연결 지향적이며 신뢰성 있는 전송을 하기 위해 흐름제어, 순서제어, 오류제어를 한다.
세그먼트를 주고 받음
IP
인터넷 프로토콜로 데이터 패킷이 올바른 대상에 도착할 수 있도록 데이터 패킷을 라우팅하고 주소를 지정하기 위한 프로토콜
* 라우팅: 데이터 패킷을 출발지에서 목적지로 전송할 때의 경로중 최적의 경로를 결정하는 것
네트워크 계층에 속하는 프로토콜로 패킷을 주고 받음
TCP/IP
IP는 비연결형 지향적으로 신뢰할 수 없는 프로토콜이기 때문에 패킷을 목적지에 전달하는 것만 신경쓰고 정확히 도착했는지는 신경을 쓰지 않느다는 한계가 있다. 따라서, TCP를 함께 사용하여 데이터가 정확하게 도착하는 것을 보장하여 IP의 한계를 보완
TCP/IP 4계층
네트워크 액세스 계층: 물리적인 네트워크 연결을 다룸
인터넷 계층: IP 프로토콜을 사용하여 데이터 패킷의 라우팅 및 전송을 처리 ---> IP
전송계층: 데이터의 신뢰성 있는 전송을 담당 ---> TCP
응용계층: 최종 사용자에게 서비스를 제공하는 계층
주소창에 www.google.com 을 입력했을 때 무슨일이 일어날까?
도메인 이름?
IP주소를 통해 특정기기에 접속이 가능한데 이때, IP주소는 숫자의 나열이기 떄문에 사람이 기억하기 쉽지 않음
따라서 사람이 기억하고 사용하기 쉽게 하기 위해 만든 이름
DNS 서버란?
도메인 네임과 IP주소를 서로 변환해 주는 역할을 함
1. www.google.com 을 입력하면 웹브라우저는 캐싱된 DNS 기록들을 통해 도메인 네임과 대응하는 IP 주소를 확인
* 웹 브라우저는 DNS 서버에 검색을 하기 전 캐싱된 DNS 기록을 먼저 확인 함
만약 해당 도메인 이름에 맞는 IP 주소가 존재하면 DNS 서버에 해당 도메인 이름에 해당하는 IP주소를 요청하지 않고 캐싱된 IP주소를 바로 반환
일치하는 IP주소가 존재하지 않는다면 DNS 서버요청을 함
* DNS 캐싱이란? 한 번 입력을 받은 도메인 네임과 해당 IP 주소를 캐시에 보관하여 해당 도메인 네임을 입력 받을 시에 캐시에서 응답해 주는 것
2. 가장 가까운 DNS 서버에서 해당 도메인 이름에 해당하는 IP주소를 찾아 사용자가 입력한 URL 정보와 함께 응답해줌
* DNS서버가 호스팅하고 있는 서버의 IP주소를 찾기 위해 DNS query를 전달
DNS query는 현재 DNS 서버에 원하는 IP 주소가 존재하지 않는다면 해당 IP주소를 찾을 때까지 다른 DNS 서버를 방문하는 과정을 반복
<DNS 서버를 방문하는 과정>
- DNS 서버는 계층적으로 이루어져 있어 가장 최상위엔 root DNS 서버가 있음
- root -> Top Level Domain(주로 나라 개념: kr, jp, cn...) -> Second Level Domain...
1) 먼저 호스트는 자신이 알고 있는 가장 가까운 DNS 서버에 www.google.com에 대한 주소 요청
2) 가까운 DNS 서버가 IP주소를 모를 경우 root DNS 서버에 물어봄 ---> (root DNS 서버는 가장 최상단에 위치 해 있기 때문에 모든 DNS 서버들이 root 서버에 대한 정보를 알고 있어 물어볼 수 있음)
3) root DNS 서버도 IP 주소를 모른다면 계층적으로 다음 레벨로 내려가 IP 주소를 찾을 때 까지 탐색
3.응답받은 IP주소를 이용하여 웹 브라우저는 웹 서버에게 해당 웹사이트에 맞는 html 문서를 요청
[응용계층]
http 프로토콜로 해당 ip주소로 request(GET)를 보냄
[전송계층]
웹서버와 TCP프로토콜로 연결하여 GET요청을 보내 웹페이지를 요구
TCP 3-way handshaking을 이용해 연결을 설정한 후 데이터를 안전하게 보냄
3-way handshaking: TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 신뢰성 있는 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
<3-way handshaking 과정>
클라이언트가 연결을 만들어 달라고 요청하는 SYN 패킷 보냄 -> 서버는 요청을 수락한다는 ACK 패킷 보냄 -> 클라이언트는 확인했다는 응답인 ACK 패킷을 보냄
데이터를 다 받은 이후엔 4-way handshaking을 통해 TCP 연결 해제함
4-way handshaking
클라이언트가 연결을 종료하겠다는 FIN 보냄 -> 서버는 확인 메세지 ack을 보낸 후 자신의 통신이 끝날 때 까지 기다림 -> 서버의 통신이 끝나면 연결이 종료 됐다고 클라이언트에게 FIN 보냄 -> 클라이언트는 확인했다는 메세지 ACK을 보낸 후 종료
'JAVA' 카테고리의 다른 글
데이터베이스 프로그래밍 (0) | 2024.02.02 |
---|---|
스레드 풀 (0) | 2024.02.01 |
데이터 입출력 (0) | 2024.01.31 |
추상 클래스와 인터페이스 (0) | 2024.01.04 |
객체지향 프로그래밍 (0) | 2024.01.04 |