Network
서버(서빙): sender(보내는사람) 클라이언트(고객): receiver(받는사람)
프로토콜(전송규약)
- 규칙
- smtp(Simple Mail Transfer Protocol : 메일전송규약), ftp(File Transfer Protocol : 파일전송규약), http(HyperText Transfer Protocol : 하이퍼문서 전송 규약)
TCP(Transfer Control Protocol)
- 신뢰성(Reliable) 있는
- 연결지향성(Connection-oriented)
- 오류 및 패킷 손실 검출시 재선송 요청
- Low control를 위해 windowing을 사용 속도는 다소 느려도 신뢰성 제공
UDP(User Datagram Protocol)
- 신뢰성(Unreliable) 없는
- 비 연결성 (Connection less)
- 재 전송 없음
- 신뢰성은 보장하지 않지만, 고속 데이터 전송이나 실시간 전송에 적합
프로토콜
- 두 엔드포인트가 서로 대화할 수 있으려면 둘 다 일련의 규칙을 따라야 합니다. 컴퓨터에서 이러한 규칙 집합을 프로토콜이라고 합니다.
- IP : 숫자로된 집주소.
- 도메인 : 주소를 문자로 한 이름
Socket(소켓) 프로그래밍?
: 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를
주고받을 수 있도록 하는 것.
- 내가 먼저 노드(컴퓨터)에 요청: 클라이언트
- 신호를 받아서 내려주는 역할: 서버
종류: UDP 와 TCP 2가지 종류가 있다. –> 차이?
UDP vs TCP 신뢰도 up
UDP: 신뢰도 down
클라이언트와 서버의 커넥션 없다.
메시지 하나로 왔다갔다함.
데이터그램이 전송되는지 보장할 수 없다.
->서버와 클라이언트 누구에게나 자유롭게 보낼 수 있다, 정보를 받았는지 확인이 되지 않는다. 데이터그램이 중간에 없어져도 알 수 없다.
속도가 빠르다(TCP와 다르게 흐름제어를 하지 않기 때문), 안정성 보장X
대용량 데이터를 보낼 때 사용.
데이터가 분실되더라도 우리가 취급하는데 이상이없는 경우,(영상같은거)
송수신하는 데이터의 양은 작으면서 잦은 연결이 필요한 경우에 TCP보다 훨씬 효율적이고 빠르게 동작한다.
TCP: 신뢰도 up
: 클라이언트가 받을 때 까지 신호를 보낸다. 바이트 스트림을 주고 받는다. 문서 전송. 속도가 느린편이다.
서버 만들기 절차)
서버란? : 클라이언트에게 네트워크를 통해 _정보나 서비스_를 제공하는 컴퓨터 시스템.
서버를 만들기 위한 절차 ?
-
소켓 생성: 통신 개찰구 입구 생성.
- bind() : 서버의 ip주소(소켓 주소)와 포트(소켓 번호)를 소켓에 할당./ 결합. –>나 여기서 장사할게 여기가 가게입구야.
- listen(): 다른 컴퓨터에서 응답할 수 있도록 대기 상태로 만들기.
- accept() : 어떤 클라이언트로 부터 연결 요청이 왔으면 수락해주는 함수.
- read()write(): 두 컴퓨터가 연결되었으니 필요한 데이터를 전송하고 받는다.
- close() : 끝날 시에 연결을 끊어준다.
client 만들기 절차
- 소켓생성
- ()
- connect() 연결요청
- close() 소켓을 닫고 통신 종료하는 함수.
주소 체계와 데이터 정렬
IP vs Domain vs name server
-
IP: Internet protocol의 약자
-
Domain 주소: 숫자로 된 주소를 문자로 바꾸어준다.
-
네임서버: 문자로 된 주소를 숫자로 바꾸어 준다.