Network 연결 방식
1. tcp : 연결이 지속되는 방식. 실시간 통신 가능. 신뢰도가 높으나 네트워크에 부하가 걸리기 쉽다.
Socket, ServerSocket을 주로 사용.
2. www 기반의 URL은 Uniform Resource Locator의 약어가 URL이다. 자바의 URL클래스는 URL통신을 가능하게 한다.
http://www.daum.net:80/index.html 이라고 했을 때
http : 프로토콜 식별자
www.daum.net : 호스트 네임(도메인 네임)
80 : 웹서비스의 포트번호
index.html : 찾고자 하는 파일네임
URL 클래스의 생성자의 예 :
new URL("http://www.daum.net:80/");
new URL("http", "www.daum.net", "/index.html");
new URL("http", "www.daum.net", 80, "/디렉토리/index.html");
3. udp : 비연결성 통신방식. 신뢰도는 낮으나 네트워크에 부하가 덜하다.
DataGramSocket, DataGramPacket, MultiCastScoket을 주로 사용
http://cafe.daum.net/flowlife/HqLo/44
HTTP통신과 socket 통신의 차이점 https://kotlinworld.com/75
자바 - 소켓통신이란? https://kadosholy.tistory.com/125
TCP/IP : http://cafe.daum.net/flowlife/F6Jx/123
알려진 네트워크 서비스 port 번호 : http://cafe.daum.net/flowlife/F6Jx/122
윈도우 에서 특정포트 사용여부 확인 : http://cafe.daum.net/flowlife/F6Jx/135
OSI(Open System Interconnection) 7계층 : http://kangkoon.blogspot.com/2016/07/osi-7-layer.html
네트워크와 네트워킹 : https://12bme.tistory.com/64
https://www.youtube.com/watch?v=K9L9YZhEjC0
ping : 다른 호스트에 IP데이터그램 도달 여부를 조사하기 위한 프로그램.
핑(Ping)은 TCP/IP 프로토콜을 사용하는 응용 프로그램으로 다른 호스트에 IP 데이터그램이 도착할 수 있는지 검사하는 것을 의미한다. 핑(Ping)을 수행하는 프로그램은 ICMP( 네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜 ) echo request라는 메시지를 원격 호스트로 보낸 후 응답을 기다린다. 송신한 ICMP echo request를 받은 호스트가 동작 중이면 응답할 것이고 호스트가 동작하지 않으면 않을 것이기 때문이다. 이와 같이 ICMP echo reply가 돌아오는지의 여부에 따라 원격 호스트가 동작 중인지 아닌지를 검사할 수 있다.
핑(Ping)이라는 이름은 'Packet Internet Groper'의 약자로, 물체의 위치를 찾는 음파탐지기로부터 유래되었으며 마이크 무스(Mike Muuss)에 의해 개발되었다. 일반적으로 어떤 호스트에 Ping을 수행할 수 없다면 그 호스트에 대해서는 FTP나 Telnet을 실행할 수 없다. 다시 말해 어떤 호스트에 Telnet을 실행할 수 없는 경우, Ping은 어떤 문제가 발생했는지의 여부를 결정하는 시작점이 된다. 또, Ping은 어떤 호스트까지의 왕복 시간을 측정해서, 그 호스트까지의 거리를 알려준다. 이와 같이 Ping은 진단용으로 네트워크 또는 시스템에 장애가 발생했는지의 여부를 조사하는데 사용되기도 한다.
[네이버 지식백과] 핑 [Ping : Packet Internet Groper] (두산백과 두피디아, 두산백과)
tracert : tracert 또는 traceroute는 목적지까지의 네트워크 경로와 연결 상태를 파악해 주는 진단 명령어이다. 즉, Traceroute 명령(Windows의 Tracert)은 대상까지 홉 단위로 경로를 추적하기 위해 장치와 서버에 내장된 작은 네트워크 진단 소프트웨어이다. 많은 네트워크 관리자는 매일 Traceroute 명령을 사용한다. Windows(Tracert), macOS, Linux(Traceroute), 모바일(Android 및 iOS) 등 다양한 운영 체제에서 사용할 수 있는 편리한 도구다.
Traceroute에 액세스하려면 터미널(Linux 및 macOS) 또는 명령 프롬프트(Windows)를 사용해야 한다. Traceroute를 사용하면 패킷이 대상(도메인 또는 IP 주소)까지 이동하는 전체 경로를 볼 수 있다. 그 외에도 이동 중인 라우터의 호스트 이름과 IP, 대기 시간, 각 장치가 데이터를 수신하고 다시 보내는 데 걸리는 시간을 볼 수 있다.
윈도우에서는 CMD를 통해 tracert로, 리눅스와 맥에서는 터미널을 통해 traceroute 명령어를 사용한다.
홉(hop) : tracert는 ping과 마찬가지로 목적지에 ICMP 패킷을 보내는 방식으로 작동된다. 패킷은 출발지에서 목적지로 한 번에 이동하지 않고 여러 구간을 거치고 목적지에 도착하게 된다. 이때 각 구간을 hop이라고 부른다.
tracert를 이용하여 패킷이 지나는 hop 마다의 IP 주소와 구간 별 패킷이 이동하는 시간을 체크할 수 있다.
네트워크 경로 추적을 하는 이유는 아래와 같이 정리된다.
1. 패킷이 목적지까지 향하는 전체 경로를 파악한다. // 어떤 경로에 문제가 발생했는지 확인
2. 각 홉에 존재하는 라우터 정보를 확인한다.
3. 각 홉에 도착하는데 걸리는 시간을 확인한다. // 속도가 지연되는 경우 확인
tracert 사용 방법 (Window)
tracert [ip주소 또는 도메인]
ex) tracert google.com
1. 목적지 주소를 나타낸다.
2. 출발지에서 목적지까지의 거친 홉수를 보여준다.
-> 내 PC -> google.com 사이에는 14개의 호스트가 있다는 것이다.
3-5. RTT(Round Trip Time : 도착지에 도착하는데 걸린 시간)을 의미한다.
-> 내 PC에서 첫 번째 호스트까지는 각각 1ms, 1ms, 1ms 걸렸다는 의미다.
* tracert는 호스트에 응답이 있다면 default로 icmp 패킷을 3번 보내 체크한다.
6. 해당 홉의 호스트 이름과 IP주소를 표시해 준다.
출처: https://samso.tistory.com/23 [삼소의 삼삼한 메모장:티스토리]
IT 시스템 설계 시 용량 산정을 할 때 고려해야 할 대표적인 지표는 아래와 같다.
- IT 시스템을 통해 동시에 얼마나 많은 사용자를 처리할 수 있을지 - 동시 사용자 수
- IT 시스템이 사용자 1명당 보통 얼마의 리소스를 소비하는지 - 처리량
- IT 시스템이 사용자에게 얼마나 빠른 시간 내에 응답해야 하는지 - 성능
- IT 시스템이 단위 시간 내에 얼마나 많은 작업을 해야 하는지 - TPS(Transaction Per Second)
- 기타 (기능성, 신뢰성, 효율성 ...)
* 대역폭(bandwidth)은 "일정한 시간 내에 데이터 연결을 통과할 수 있는 정보량의 척도"이다.
컴퓨팅에서 사용 가능하거나 소비된 정보 용적의 비트레이트이다. 일반적으로 초당 여러 비트로 표현된다. 메가 비트(Mbps) 또는 기가비트 급(Gbps) 등의 비트 레이트(bps) 배수로 측정된다.
대역폭에는 네트워크 대역폭(network bandwidth), 데이터 대역폭(data bandwidth), 디지털 대역폭(digital bandwidth)이 있다.
네트워크 출력(Throughput) vs 대역폭(bandwidth)
1) 네트워크 출력(Throughput) : 네트워크 출력(혹은 출력률, 쓰루 풋)이란 얼마나 많은 데이터가 단위 시간 내 목적지에 전달될 수 있는지에 대한 지표이다. 얼마의 데이터가 1초 동안 전달되는지를 기본적인 출력의 단위로 사용하는데 이때 bps(bits per second) 혹은 data packets per second로 표기한다. 큰 출력을 가진 시스템은 bps가 아닌 Mbps, Gbps를 사용한다. 예를 들어 100bytes의 데이터를 전달하는데 1초가 걸렸다면 이 시스템의 네트워크 출력은 800bps이다. 100bytes/seond = 100 * 8 bits/second = 800 bps(bits per second)
네트워크 출력은 시간에 따라 작아지기도 커질 수도 있는 가변적인 값이다. 따라서 시스템의 출력률을 명시할 땐 평균 출력(Average Throughput)값을 사용한다.
2) 네트워크 대역폭(Bandwidth) : 네트워크가 단위 시간 내 전달할 수 있는 최대 크기의 전달 용량을 의미한다. 대역폭이 높을수록 많은 데이터가 네트워크에 실려서 전달하고 전달받을 수 있다. 대역폭 자체는 전달 속도와는 관계가 없으며 오히려 용량(capacity)과 관계가 있다. 대역폭은 결국 단위 시간 내 전달할 수 있는 데이터의 양이므로, 서비스의 크기에 따라 아래의 단위를 사용한다. (이 단위는 네트워크 출력을 표현할 때도 동일하게 사용한다.)
- bits per second (bps)
- megabits per second (Mbps)
- gigabits per second (Gbps)
네트워크 출력과 네트워크 대역폭의 상관관계 : 여러분의 IT 시스템이 짧은 시간에 많은 데이터를 전달해야 한다면, 출력만 높아서도 안되고 대역폭만 높아서도 안된다. 이 둘은 상관관계라는 의미이다. 단위 시간 내 많은 양의 데이터를 한 번에 보내기 위한 출력도 높이고, 이를 받아서 전달하는 파이프 역할을 하는 대역폭도 커야 한다.
IT 시스템에서 시간의 흐름에 따라 전달하는 데이터의 양이 작아질 수도, 커질 수도 있다. 동일한 사용자의 요청이 지속된다고 하더라도, 예상하지 못한 변화가 잦은 이유는 특히 외부 인터넷을 사용하는 네트워크 상의 변수가 많기 때문이다.
대표적인 요인
- 네트워크 지연(network latency): 예상하지 못한 시간이 데이터 전달에 소요되는 현상.
- 네트워크 혼잡(network congestion): 전달해야 하는 데이터의 양이 네트워크에 몰리는 현상.
- 패킷 손실(packet loss): 예상하지 못한 패킷(packet)이 전달하는 동안 손실되는 현상.
참고로 "출력이 높고 대역폭이 작다면, 네트워크 출구에서 대기하는 데이터가 많을 것이고, 이는 시스템의 성능(performance)에 안 좋은 영향을 미치게 된다. 출력이 낮은데 대역폭은 크다면, 대역폭과 비용의 낭비를 예상할 수 있다."