# Network
repeater
physical layer에서 함
신호증폭
거리가 멀어지면 노이즈도 들어가고 어쩌구.
브릿지
데이터링크레이어
2개의 떨어져있는 네트웍 연결
브릿지, 스위치는 본질적으로 같음
라우터
- 네트웍 레이어
게이트웨이
네트웤 레이어 포함하는 윗쪽에서 씀
데이터를 전달 시 바꿔주는 부분
End-point
- 자기와 같이 일하는 상대 어플리케이션이 있는 네트워크로 데이터 주고받음
소켓
- 데이터를 보내고 받는 인터페이스 포인트
어플리케이션 프로토콜
HTTP가 한 종류임
엔드포인트와 엔드포인트 사이에 정보 전달 규칙
트랜스포트레이어에서 제공한 인터페이스만으론 안전히 정보전달 못함
bandwidth / latench
- b : 시간당 전송할수있븐
- L: 지연
# TCP/IP 소켓 프로그래밍
[ ] Ch 1 - 서론
1.1 네트워크, 패킷, 프로토콜
컴 네트워크
통신 채널로 상호 연결된 수많은 장비들로 구성.
=>호스트, 라우터
호스트: 웹 브라우저, 메진저 프로그램, 파일 공유 프로그램들을 구동하는 컴퓨터
호스트 상에서 동작하는 응용프로그램 <<네트워크의 ‘실 사용자’
라우터(=게이트웨이)
하나의 통신 채널로부터 온 정보들을 다른 통신 채널로 교체, 전달하는 일을 도맡은 장비
프로그램을 구동시키기도 하지만
보통 응용 프로그램을 구동하진 않는다.
실제로 모든 호스트를 다른 호스트에게 직접 연결하진 않는다.
대신 소수의 호스트들이 라우터에 연결. 이 라우터가 다른 라우터에게 계속적으로 연결이 되어 네트워크를 구성.
실제로 대부분의 호스트는 하나의 연결이면 충분.
- 네트워크상에서 정보를 교환하는 프로그램은 라우터와 직접 상호작용 ㄴㄴ, 일반적으로 라우터의 존재를 모르는 상태로 동작.
*통신채널: 하나의 호스트에서 다른 호스트로 일련의 바이트 집합을 전달하는 매개체
이더넷처럼 유선이거나
와이파이처럼 무선일수도 있고 그 외일수도 있다.
정보: 연속된 바이트로 이루어진 집합체.
프로그램에 의해 생성되고 이해됨.
패킷: 컴퓨터 네트워크의 관계에서 이런 일련의 바이트 집합체
하나의 패킷은 제어정보를 가지는데, 이는 주로 네트워크 자체가 자신의 목적을 위해 사용하기도 하며, 때때로 사용자의 정보를 포함하기도 함.
제어정보의 경우 패킷의 목적지를 나타내는 정보가 하나의 예가 될 수 있음.
라우터는 이러한 패킷의 제어 정보를 이용하여 각 패킷을 어떻게 전달할지 알아냄.
프로토콜
통신 프로그램 사이에서 교환되는 패킷에 대한 약속이자 정의
패킷이 어떻게 구성되어있고 정보가 어케 이해되는지를 정의
- ex. 패킷 내부에서 목적지 정보는 어디에 위치해있는지, 그 크기는 어케 되는지…
일반적으로 특별한 문제를 해결하기 위해 설계
HTTP(Hyper text transfer Protocol)
하이퍼 텍스트를 생성하고 저장하는 서버와
이를 분석해서 사용자에게 보여주는 클라이언트 간의 전송문제를 해결
인스턴스 메세지 프로토콜
- 둘 이상의 사용자들이 간단한 텍스트 메세지를 교환하는데 있어서 생기는 문제를 해결.
실제로 유용한 네트워크를 구현하기 위해 많은 수의 다양한 문제들을 해결하는것이 필요.
이러한 문제들을 모듈화하고 쉽게 관리하기 위해 여러 개의 프로토콜이 설계
TCP/IP는 이러한 문제를 해결하기 위한 프로토콜의 모음 중 하나.
보통 이런 프로토콜의 모음을 ‘프로토콜 집합체(Protocol suite)라 부름.
인터넷에도 사용되지만 사실 네트워크에서도 사용가능.
따라서 우리가 ‘네트워크’라고 말할 때는 TCP/IP프로토콜 집합체를 사용하는 어떠한 네트워크도 이에 해당됨.
인터넷 프로토콜(IP), 전송제어프로토콜(TCP, Transmission control), 사용자데이터그램프로토콜(UDP,User datagram protocol)이 있음.
프로토콜은 계층(layer)화 시키는것이 유용.
응용 프로그램은 점선에서 표현된 소켓 API를 통해 TCP또는 UDP의 서비스에 접근하게 됨.
하부계층: 이더넷이나 전화모뎀 연결과 같은 하부통신 채널로 이루어져있음.
- (라우터가 하는것처럼)패킷을 목적지로 전달하는 담당인 네트워크계층에 의해 사용됨.
- TCP/IP 프로토콜 집합체에서 네트워크 계층을 구성하는건 인터넷프로토콜(IP)계층 뿐이다.
- IP는 임의의 두 개의 호스트 사이에 존재하는 여러 개의 채널과 라우터의 순서를 마치 하나의 호스트-호스트 연결 채널처럼 보이게 만듦
인터넷 프로토콜은 ‘데이터그램’서비스를 제공.
모든 패킷들은 네트워크에 의해 각각 독립적으로 다뤄짐.
각 IP패킷들은 자신의 목적지주소(adress)를 가짐.
IP는 단순히 최선전달서비스(best-effort service)를 할뿐
- 아이피는 각 패킷을 전송하지만 네트웍을 경유하며 가끔 패킷을 손실할수도 있고 순서가 바뀔수도 있으며 복제된 패킷이 생길수도 이씀.
전송계층(transport layer): IP계층위에 존재
TCP, UDP 2개의 선택 프로토콜 제공.
이것들은 IP가 제공하는 서비스를 이용해 각각 다른 전송 기능을 제공
응용프로토콜(application protocol)의 전송특징에 따른 필요성에 의해 그에 맞는 프로토콜이 선택적으로 사용.
# Network 공부
cmd
- 핑을 확인할 때 사용하는 명령어
ncpa.cpl
- 네트워크 상황을 볼 수 있는 제어판의 네트워크 창 명령어
LAN
근거리 통신망.
어느 좁은 지역(pc방, 사무실…)을 엮는 네트워크 망
초기투자비용 높지만 유지보수비 낮다.
구성장비: 2계층 장비인 switch, 1계층장비인 hub
WAN
원거리 통신망
LAN구간을 서로 연결하는 네트워크망
광역 네트워크(서울과 부산을 이어주는 넷웍)
초기 투자비용이 낮은대신 유지보수비 높은평
KT, 메가패스.. 등 ISP업체가 담당
구성장비: 3계층장비인 Router, L3 switch
port
컴 네트웍에 접속하려면 컴의 문(=포트)를 이용해 들어가야함.
포트는 각 번호마다의 특징 가졌는데, 주요 포트를 보면 다음과 같다.
HTTP(80)
웹서버와 클라이언트가 상호 통신하기 위해 사용하는 하이퍼텍스트 전송 규약.
우리가 주소창에 도메인명 적을때, 우리는 이 포트번호 80번을 사용하고 있는겨.
FTP(21, 21)
- 컴이 파일 전달할때 사용
Telnet(23)
가상 터미널 서비스.
원격지에서 컴으로 접속하는 서비스.
SMTP(25)
DNS(53)
Domain name system.
IP주소와 문자로 이루어진 주소를 연결시켜줌.
daum.net을 인터넷에 치면 - 이 주소를 DNS에 물어봄.
그럼 DNS가 다음의 IP주소를 클라이언트에 돌려주게 되고, 이 IP주소로 클라이언트는 다음에 접속.
TFTP(69)
ARP
Application Requirement Profile
IP를 이용하여 맥어드레스를 알아오는 프로토콜.
컴은 IP주소로만 통신 불가. 물리주소인 맥어드레스 필요.
분당구 삼평동 진유림 귀하
분당구삼평동: 논리주소. 이사하면 바뀜
진유림 : 사람의 고유이름. 맥어드레스
IP주소를 이용하여 mac address를 알아오는 프로토콜
인트라넷
내부의 네트워크. 인터넷과는 단절된 또 다른 네트워크.
주로 보안 위해 사용.(회사기밀, 군사기밀…)
또 다른 작은 인터넷을 하나 더 만들기.
엑스트라넷
- 인트라넷과 유사하지만, 회사 외의 회사고객이나 협력 회사에게도 사용 가능
통신 방식
- 1.유니캐스트
1:1전달방식
수신측이 한 곳으로 정해져 있는 경우 사용.
정확한 특정 목적지가 있고, 그 목적지를 알고 있다면 그 주소 하나로 1:1통신
- 브로드캐스트
- 1:전체 전달방식
- TV, Radio…
- 255.255.255.255
- FF-FF-FF-FF-FF-FF
- 멀티캐스트
IT용어 자체.
1:그룹 전달
한사람이 어떠한 하나의 그룹을 대상으로 정보 전송
케이블 TV, 인터넷방속
244.0.0.5
01-00-5E-00-00-02
- 1.유니캐스트
Ethernet(이더넷)
LAN구간에서 사용되는 네트워크 방식 중 하나.
2계층에서 사용되는 프로토콜.
울나라는 대부분 Ethernet방식으로 네트워킹함.
가장 큰 특징: CSMA/CD방식으로 통신.
위 3단계가 일어나면 데이터가 충돌했다고 일컫음.
이렇게 데이터가 충돌하면 Frame을 전송한 컴퓨터는 서로 랜덤한 시간을 지정하고 그 시간만큼 대기한다. 그리고 그 시간 지난 후 다시 데이터 전송.
3번과정 재전송을 15회이상 실패하게 되면 Frame전송을 포기
충돌이 발생하는 영역을 Collision Domain이라 일컫음.
하지만 Full-duplex로 동작하는 네트워크 구간에서는 데이터를 서로 다른 링크로 전달하기 때문에 충돌 일어나지 않음.
토큰링
LAN구간에서 사용되는 네트워킹 방식은 이더넷 말고 토큰링 있음.
우리나라에선 잘 사용x.
2계층 프로토콜.
PC가 데이터를 전송하고자 할때, 이더넷처럼 네트워크 링크에 데이터가 있나 없나 보는게 아니고,
토큰링이 네트워크 데이터를 전송하고자 할땐 네트워크에 부여되는 토큰을 이용.
토큰이 있는 PC는 데이터를 전송할 수 있으며, 토큰이 없으면 토큰이 자기에게 올때까지 기다려야함.
데이터가 충돌할 염려는 ㄴㄴ
당장 데이터 보내야할 PC가 있더라도 토큰이 자기에게 돌앙ㄹ때까지 기다려야함.
계층별 사용 장비
- Physical layer(물리계층)
리피터
케이블로 데이터가 전송되며 저항에 의해 약화된 신호를 다시 증폭시켜 계속해서 전달
2계층에서 사용하는 mac add나 IP주소 이해불가.
오로지 전기신호 증폭만.
요즘 추세는 리피터보다 허브
허브
전기신호 증폭
=>LAN구간 전송거리 연장가능, 여러 대의 장비를 LAN에 접속할 수 있도록 해줌.
200~300m떨어진 PC에는 중간중간 허브 설치해줌.
Flooding: 허브는 여러대에 연결가능한데, 만약 한장비에서 신호 보내면 나머지 연결된 모든 장비로 신호 전송
허브에 연결된 장비들은 하나의 Collision Domain에 속해있다 표현
- Data link layer
Bridge
Ethernet 장비를 물리적으로 연결할 수 있으며 전기적 신호 증폭.
허브처럼 단순증폭X, Frame이라는 데이터 자체를 다시 생성하여 전송.
Mac add식별가능 ->이걸 사용하여 Frame전송 포트를 결정가능.
요즘은 bridge보다 스위치 많이 씀
Switch
Mac add식별가능, Mac address table이란걸 생성하고 이 테이블 보고 목적지를 결정.
스위치는 이걸 사용해서 특정장비에게만 데이터 보내기 때문에 충돌 일어나지 않는다.
Mac add를 사용하는 계층으로, IP주소는 알아볼 수 없다 하지만 이로 인해 데이터충돌을 완화시키고 감지 가능.
스위치에 연결된 장비는 각각의 포트가 하나의 Collision Domain에 속해있다 표현
- Network layer
Router
라우터와 L3스위치는 Layer3 header에 있는 IP주소를 참조하여 목적지와 연결되는 포트로 Packet을 전송.
다른 랜구간의 장비와 통신하기 위해선 이 라우터를 거쳐야함.
라우터는 수신된 Packet을 보고 출발지 IP를 알아냄.
그리고 출발지와 연결된 인터페이스를 통하여 데이터를 전송 ==>라우팅
전세계의 인터넷을 연결시켜주는 장비
한국에서 미국까지 가려면 30개도 안되는 라우터 장비 지나감.
이런 라우터가 Broadcast를 하면? 내가 인터넷에 접속했다~라는 패킷이 전세계로 뿌려지는것과 똑같은 이치
TCP/IP
인터넷을 이용하기 위한 필수조건. 프로토콜의 한 종류
인터넷의 공용어
특징: 네트워크에 접속하는 각각의 컴이 각각 주소 가지고, 네트워크에 접속되어 있는 또다른 컴과 통신을 원활히 해줌.
IP Address
컴퓨터의 이름
같은 네트워크 내부에서 같은 IP add가 둘이상 존재=>원활통신 불가, IP가 충돌.
ipconfig입력하면 보임.
Network ID: 시골 동네 이름(넷피리)
Host ID: 동네에 사는 각각 가정 주민들.
하나의 네트워크 아이디에 여러개의 호스트 아이디가 존재가능
하나의 동네=>하나의 LAN구간(=하나의 Broadcast Domain)=3계층 장비인 라우터를 지나치지 않고 통신 가능한 구간.
- 반대로 LAN과 LAN사이의 통신을 위해선 3계층장비인 Router가 필요.
서브넷 마스크
네트워크 아이디랑 호스트 아이디 구분하려고 만듦.
1로 이뤄진 부분과 0으로 이뤄진 부분으로 나뉨.
111111.11111.111111.00000 <<1로 이뤄진걸 넷웍아이디, 0으로 이뤄진부분을 Host Id
IP address와 Subnet 마스크를 AND연산(1이면그대로, 0이면 0으로)한게 Network Id
네트워크 아이디와 브로드캐스트 주소는 IP주소로 사용불가!