TCP / IP?

 

인터넷 네트워크의 핵심 프로토콜( 프로토콜(Protocol)은 규약이다. 일종의 약속이라는 뜻이다. 커뮤니케이션 하는 컴퓨터들 간에 오류를 최소화함으로써 정보를 원활하게 교환하기 위해 만들어진 규칙의 집합) 으로서. 인터넷에서 전송되는 정보나 파일들이 일정한 크기의 패킷들로 나뉘어 네트워크상 수많은 노드들의 조합으로 생성되는 경로들을 거쳐 분산적으로 전송되고, 수신지에 도착한 패킷들이 원래의 정보나 파일로 재조립되도록 하는 게 바로 TCP/IP의 기능이다.

 

프로토콜인 TCP는 전송할 파일을 좀 더 작은 패킷들로 나누어 인터넷 네트워크를 통해 전송하는 일과 수신된 패킷을 원래의 메시지로 조립하는 일을 담당.

IP는 각 패킷의 주소 부분을 처리해 패킷들이 목적지에 정확하게 도달하도록 하는 기능을 수행한다.

 

예를들어 20명의 사람이 오이도를 가는데 차 1대로 못가기 때문에 여러대의 차를 빌려 나누어 탄다. 그 중 대장은 연락을 통해 목적지를 정하고 그 목적지로 전원이 잘 도착 할 수 있도록 유도 하는 것과 같다.

 

 

클라이언트-서버 통신 모델

 

서버 클라이언트가 요청하는 서비스를 처리

클라이언트 : 서비스를 서버에게 요청

 

한 컴퓨터에서 실행되는 두 프로그램에 클라이언트-서버 모델을 적용하면 데이터 주고받기가 가능

 

접속이 성공하려면 반드시 상대 프로그램이 실행되어야함 동시접속 모델을 사용하면 타이밍문제로 실패확률 높음 따라서 서버-클라이언트 모델을 이용하여 먼저 실행하는쪽을 서버 후를 클라이언트로 하여 해결가능

 

 

네트워크로 연결된 컴퓨터는 반드시 TCP/IP로 연결가능


1. 원이 두 점에서 만나는 경우
r2 - r1 < d < r1 + r2


2. 두 원이 외접하는 경우 (한점에서 만난다)

d = r1 + r2


3. 두 원이 내접하는 경우 (한점에서 만난다)
d = r2 - r1
and
d != 0


4. 하나의 원이 다른 원을 포함하는 경우 (만나지 않는다)
d < r2 - r1


5. 두 원이 멀리 떨어져 만나지 않는 경우
d > r1 + r2


6. 두 원이 일치하는 경우 (무수히 많은 점에서 만난다)
d = 0
r1 = r2



1. 문자열


파이썬에서는 문자를 " 혹은 '로 묶어서 표현 합니다. 서로 쌍이 맞아야 합니다.


' string ', " string " 처럼!


만약 print 함수를 통하여 인용을 나타내고 싶을때는 """ 혹은 '''을 사용하면 표현 가능합니다.


예를들어 print(""" 영원에 살고 순간에 살아라 영원히 살 것처럼 일하고 금방 죽을 것 처럼 사람들을 대하라. - 리히텐베르크""")와 같이 말이죠!!!


또는 \' \"의 에스케이프 문자를 이용하여 표현이 가능합니다.


문자열을 더하거나 같은 문자열을 반복 하고싶을때는 +, *의 연산자를 사용하면 됩니다.

"hello" + "world" = "hello world"

"re" * 3 = "rerere"


문자열의 각 문자는 인덱스를 통하여 접근 가능합니다.


c = "hello"

c[0] = h 출력

c[1] = e 출력


** 문자열 슬라이싱 **


변수명 [시작위치:끝위치]를 이용하여 문자열을 꺼낼수 있습니다.

c = "hello"

c[0:3] = 'hel'과 같이 말이죠!

시작이나 끝을 생략 할 경우는 시작 혹은 끝으로 간주 됩니다. 또한 -를 통하여 문자열 끝부터 문자열 시작 까지도 가능!

c[-1] = "hello


2. 리스트


값의 나열을 담는 자료형. 순서가 존재하며 여러 종류의 값을 담을 수 있을뿐 아니라 인덱싱을 통한 접근, 슬라이싱을 통한 접근이 가능합니다.

리스트를 만드는 방법은 다음과 같습니다.

animal = ['dog', 'bird', 'cow']


 멤버함수명

설명 

 append()

 리스트의 뒤에 값을 추가.

 insert()

 원하는 위치에 값을 추가. 

 extend()

 튜플 혹은 리스트 등의 여러 값을 한 번에 삽입 

 index()

 어떤 값이 어디에 존재하는지 반환 

 count()

 현재 값의 개수를 반환 

 pop()

뒤에서 부터 값을 뽑아낸다.  

  remove()

 해당 값을 삭제 

  sort()

 순방향으로 정렬

  reverse()

 역방향으로 정렬


+연산자를 통하여 삽입이 가능하다. 그러나 튜플이나 리스트가 아닌 문자열을 'abc'와 같이 넣을 경우 'a' 'b' 'c'의 형태로 쪼개어 들어갑니다.


3. 세트 


수학의 집합과 같다.


union

매개변수로 들어가는 세트와의 합집합을 반환 

intersection() 

매개변수로 들어가는 세트와의 교집합을 반환 

- 연산자 

 차집합을 반환

| 연산자

 합집합을 반환

& 연산자

 교집합을 반환





4. 튜플


()로 묶어서 표현하며 읽기 전용이다. 속도는 리스트에 비해 빠르다.


 count()

 현재 값의 개수를 반환 

 index()

 어떤 값이 어디에 존재하는지 반환 



5. 딕셔너리


key와 value로 구성되어 있으며 가장 많이 사용하는 자료구조

예) a = dict(a=0, b=1, c=2)

   >>>a

   {'a':0, 'b':1, 'c':2} 

없는 키를 사용 할 경우 오류가 발생.

 item()

 딕셔너리의 모든 키와 값을 튜플로 묶어 반환

 key()

 키를 반환

 value()

 값을 반환


6. 얕은복사와 깊은 복사


파이썬에서의 모든 변수는 해당 객체의 주소를 갖고 있다. 그러므로 주의 해야 할 점이 있는데

아래의 예제와 같은 경우와 같이 복사 생성을 할 때에는 주솟값이 복사가 된다.

a = [1, 2, 3]

b = a 

a[0] = 4

>> b

b [ 4, 2, 3] 의 결과와 같이 b는 a의 주소값을 복사 한 것이다.

고유한 값인 아이디를 반환하는 함수를 사용하면 다음과 같다.

id(a), id(b)

(180000, 1800000 )


이를 해결하는 방법은 copy 모듈을 import하고 deepcopy()함수를 사용하면 해결 할 수 있다.





'프로그래밍 > Python' 카테고리의 다른 글

[파이썬 기초 문법 - 3] 제어관련  (0) 2019.02.20
[파이썬 기초 문법 - 2] 함수  (0) 2019.02.20

+ Recent posts