#16 네트워킹

rjdqn·2022년 4월 28일
0

Java

목록 보기
10/11

클라이언트/서버

서버(server)는 서비스를 제공하는 컴퓨터(service provider)
클라이언트(client)는 서비스를 사용하는 컴퓨터(service user)
네트워크를 구성할 때 전용서버를 두는 것-> 서버기반모델
각 클라이언트가 서버역할을 동시에 수행하는 것-> P2P모델

서버기반 모델(server-based model)
안정적인 서비스의 제공이 가능하다
공유 데이터의 관리와 보안이 용이 하다
서버구축비용과 관리비용이 든다
서버구축비용과 관리비용이 든다
P2P 모델(peer-to-peer model)
서버구축 및 운용비용을 절감할 수 있다
자원의 활용을 극대화 할 수 있다
자원의 관리가 어렵다
보안이 취약하다

ip 주소

IP주소는 컴퓨터를 네트워크 상에서 구별하는데 사용되는 고유한 값, 4byte의 정수로 구성
IP주소는 네트워크주소와 호스트 주소로 나눌 수 있고 네트워크 주소가 같다는 것은 두 호스트가 같은 네트워크에 포함되어 있다는 것을 의미.
IP Address에 Subnet Mask를 '&'연산을 해주면 네트워크 주소를 알 수 있다.

URL

프로토콜//호스트명:포트번호/경로명/파일명?쿼리스트링#참조 형태
ex) http://www.codechobo.com:80/sample/hello.html?referer=codechobo#index1
프로토콜 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신규약(http)
호스트명 자원을 제공하는 서버의 이름(www.codechobo.com)
포트번호 통신에 사용되는 서버의 포트번호(80)
경로명 접근하려는 자원이 저장된 서버상의 위치(/sample)
파일명 접근하려는 자원의 이름(hello.html)
쿼리query) URL에서 '?'이후의 부분(referer=codechobo)
참조(anchor) URL에서 '#'이후의 부분(index1)

소켓 프로그래밍

소켓(socket) : 네트워크의 양방향 통신에서 양쪽 끝단
Java의 소켓 프로그래밍 : java.net 패키지

TCP, UDP

TCP와 UDP 모두 TCP/IP 프로토콜에 포함되어있는 프로토콜로, OSI 7계층의 전송 계층(transport layer)에 해당하는 프로토콜

tcp는 전화, udp는 소포
tcp는 데이터 전송전 상대방과 연결 후 전송 잘 되었는지 확인하거나 재전송한다. 신뢰있는 데이터 전송 시 요구됨.
udp는 상대방이랑 연결하지 않고 냅다 전송해서 잘 전송되었는지 확인 불가. 또 데이터 보낸 순서대로 수신한다는 보장도 X 그대신 tcp보다 빠르다.

https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4
더 참고하기!

TCP소켓 프로그래밍

  1. 서버 : ServerSocket으로 특정 포트로 소켓을 연다.
  2. 클라이언트 : 서버의 IP 주소와 포트로 Socket으로 소켓을 만들어 서버에 연결 요청을 한다.
  3. 서버 : 클라이언트의 연결 요청을 받으면 Socket으로 소켓을 만들어 클라이언트의 소켓과 연결한다.
  4. 둘다 : 연결된 각자의 소켓을 이용해 통신을 한다.

서버 소켓은 포트와 bind 되어 포트를 통해 원격 사용자의 연결요청을 기다리다가 연결요청이 올때마다 새로운 소켓을 생성해 상대편의 소켓과 통신할 수 있도록 연결한다.
서버 소켓은 소켓간의 연결만 처리하고 실제 데이터는 스트림을 통해 소켓끼리 주고받는다.
서버소켓은 포트를 독점해서 사용. 한 포트를 둘 이상의 서버소켓과 연결하는것은 불가. 클라이언트가 어느 서버 소켓이랑 연결해야하는지 헷갈리기 때문.
Port는 컴퓨터가 외부와 통신하기 위한 통로로 65536개의 포트를 갖고 있다. 보통 1023번 이하의 포트는 다른 통신 프로그램에 의해 사용되는 경우가 많아 숫자를 안겹치게 잘 골라야한다.

Socket : 프로세스간 통신 담당, Input/OutputStrea 갖고 있음. 두 스트림 통해 입출력 이루어짐.
ServerSocket : 포트와 bind되어 연결요청이 들어오면 소켓을 생성해 소켓간 통신이 이뤄지게 한다.

UDP소켓 프로그래밍

연결지향이 아니므로 ServerSocket이 따로 필요하지 않다.
소켓은 DatagramSocket를 사용해 만들어 DatagramPacket에 데이터를 담아 통신한다.
DatagramPacket에는 헤더와 데이터가 있으며 헤더에 수신할 상대방의 정보(호스트의 주소와 포트)를 저장한다.

profile
대학생

0개의 댓글